Name: series-workfloww7sp2 Phase: Succeeded StartedAt: 2026-07-15 05:17:24 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[0] Phase: Succeeded StartedAt: 2026-07-15 05:17:24 +0000 UTC FinishedAt: 2026-07-15 05:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 05:17:24 +0000 UTC FinishedAt: 2026-07-15 05:44:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL", "PCS_XPCS", "PCS_XPCS_ROCKCHIP", "DWMAC_ROCKCHIP", "PHY_ROCKCHIP_NANENG_COMBO_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL", "PCS_XPCS", "PCS_XPCS_ROCKCHIP", "DWMAC_ROCKCHIP", "PHY_ROCKCHIP_NANENG_COMBO_PHY" ], "series_id": "ca0a0a0e-66d1-494e-93b2-e0a162d22b20" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xpcs_config_aneg_c37_sgmii", "xpcs_config_aneg_c37_1000basex", "xpcs_get_state_c37_sgmii", "intel_mgbe_pcs_init", "stmmac_pcs_setup", "rk_pcs_init", "xpcs_rk_probe", "xpcs_rk_create" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfSU5URUwmIzM0OywKICAgICYjMzQ7UENTX1hQQ1MmIzM0OywKICAgICYjMzQ7UENTX1hQQ1NfUk9DS0NISVAmIzM0OywKICAgICYjMzQ7RFdNQUNfUk9DS0NISVAmIzM0OywKICAgICYjMzQ7UEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paSYjMzQ7LAogICAgJiMzNDt4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXgmIzM0OywKICAgICYjMzQ7eHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O2ludGVsX21nYmVfcGNzX2luaXQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjc19zZXR1cCYjMzQ7LAogICAgJiMzNDtya19wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDt4cGNzX3JrX3Byb2JlJiMzNDssCiAgICAmIzM0O3hwY3NfcmtfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlciYjMzk7cyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzLiBUaGVzZSBnZW5lcmljIGFuZCBQQ0ktYmFzZWQgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgbmV0bGluayBpbnRlcmZhY2UgbWFuaXB1bGF0aW9uLCBtYWtpbmcgdGhlIHBhdGNoIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDEyNiBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbiYjNDM7JVlBTUwgMS4yXG4mIzQzOy0tLVxuJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBDU1xuJiM0MztcbiYjNDM7bWFpbnRhaW5lcnM6XG4mIzQzOyAgLSBDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgUm9ja2NoaXAgUkszNTY4IFNvQyBpbnRlZ3JhdGVzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbFxuJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuXG4mIzQzOyAgVGhlIFBDUyBwcm92aWRlcyBhbiBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgTWVkaWEgQWNjZXNzIENvbnRyb2wgKE1BQylcbiYjNDM7ICBhbmQgdGhlIFBoeXNpY2FsIE1lZGl1bSBBdHRhY2htZW50IChQTUEpIHN1YmxheWVyIHRocm91Z2ggYSBNZWRpYVxuJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuXG4mIzQzO1xuJiM0MzsgIFRoZSBYUENTIGlzIGFjY2Vzc2VkIG92ZXIgdGhlIEFQQjMgYnVzIGFuZCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBhXG4mIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuXG4mIzQzOyAgSXQgc3VwcG9ydHMgMTAwMEJBU0UtWCwgU0dNSUkgYW5kIFFTR01JSSBtb2Rlcy5cbiYjNDM7XG4mIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIChwY3MtbWlpQDAuLjMpIHRoYXQgY2FuIGJlXG4mIzQzOyAgaW5kaXZpZHVhbGx5IGVuYWJsZWQgYW5kIHJvdXRlZCB0byBvbmUgb2YgdGhlIEV0aGVybmV0IEdNQUMgY29udHJvbGxlcnNcbiYjNDM7ICB2aWEgdGhlIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyBkZXZpY2UgdHJlZSBub2RlLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzXG4mIzQzO1xuJiM0MzsgICYjMzk7I2FkZHJlc3MtY2VsbHMmIzM5OzpcbiYjNDM7ICAgIGNvbnN0OiAxXG4mIzQzO1xuJiM0MzsgICYjMzk7I3NpemUtY2VsbHMmIzM5OzpcbiYjNDM7ICAgIGNvbnN0OiAwXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8XG4mIzQzOyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcbiYjNDM7ICAgICAgQVBCMyBidXMuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBjbG9ja3M6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcbiYjNDM7ICAgICAgLSBjc3I6IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyXG4mIzQzOyAgICAgICAgYWNjZXNzLlxuJiM0MzsgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxuJiM0MzsgICAgICAgIEV0aGVybmV0IChFRUUpIG9wZXJhdGlvbi5cbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogMlxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBjc3JcbiYjNDM7ICAgICAgLSBjb25zdDogZWVlXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXG4mIzQzOyAgICAgIHRoZSBzZXJpYWwgbGFuZXMgZm9yIDEwMDBCQVNFLVggLyBTR01JSSAvIFFTR01JSS5cbiYjNDM7ICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDU1xuJiM0MzsgICAgICByZWdpc3RlciBhY2Nlc3MuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLlxuJiM0MzsgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXG4mIzQzOyAgICAgIHN1cHBsaWVzIHRoZSBTZXJEZXMgUEhZLlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzO3BhdHRlcm5Qcm9wZXJ0aWVzOlxuJiM0MzsgIFwmIzM0O15wY3MtbWlpQFswLTNdJFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IHxcbiYjNDM7ICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy5cbiYjNDM7ICAgICAgVGhlIHBvcnQgbnVtYmVyIGlzIHNwZWNpZmllZCBieSB0aGUgcmVnIHByb3BlcnR5ICgwLi4zKS5cbiYjNDM7ICAgICAgVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGVcbiYjNDM7ICAgICAgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzIGRldmljZSB0cmVlIG5vZGUuXG4mIzQzO1xuJiM0MzsgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgcmVnOlxuJiM0MzsgICAgICAgIG1pbmltdW06IDBcbiYjNDM7ICAgICAgICBtYXhpbXVtOiAzXG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IHxcbiYjNDM7ICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuXG4mIzQzO1xuJiM0MzsgICAgICBzdGF0dXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgLSByZWdcbiYjNDM7XG4mIzQzOyAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO3JlcXVpcmVkOlxuJiM0MzsgIC0gY29tcGF0aWJsZVxuJiM0MzsgIC0gcmVnXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzO1xuJiM0MzthZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9wb3dlci9yazM1NjgtcG93ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIHBjc0BmZGEwMDAwMCB7XG4mIzQzOyAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzOyAgICAgIHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbiYjNDM7ICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDtjc3JcJiMzNDssIFwmIzM0O2VlZVwmIzM0OztcbiYjNDM7ICAgICAgcGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuJiM0MzsgICAgICBwaHktbmFtZXMgPSBcJiMzNDtzZXJkZXNcJiMzNDs7XG4mIzQzOyAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHBjcy1taWlAMCB7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbmluZGV4IDM3OWIwOGJkOWU5N2E2Li42MTczMTkyZTMxYWIyZiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbkBAIC04MCw2ICYjNDM7ODAsMTMgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4mIzQzOyAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDpcbiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MzsgICAgZW51bTogWzAsIDFdXG4mIzQzOyAgICBkZWZhdWx0OiAwXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbiYjNDM7XG4gICBcJiMzNDsjcGh5LWNlbGxzXCYjMzQ7OlxuICAgICBjb25zdDogMVxuIFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44Y2JhNmEwYTJkZDAzNCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4mIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSU1xuQEAgLTIzNDYzLDYgJiM0MzsyMzQ2MywxNSBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAscmszNTc2LXNhaS55YW1sXG4gRjpcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxuIFxuJiM0MztST0NLQ0hJUCBYUENTIERSSVZFUlxuJiM0MztNOlx0Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4mIzQzO0w6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG4mIzQzO0w6XHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXG4mIzQzO1M6XHRNYWludGFpbmVkXG4mIzQzO0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuJiM0MztGOlx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbiYjNDM7RjpcdGluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbiYjNDM7XG4gUk9DS0VSIERSSVZFUlxuIE06XHRKaXJpIFBpcmtvIFx1MDAzY2ppcmlAcmVzbnVsbGkudXNcdTAwM2VcbiBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbmluZGV4IDU4YzEwNTJiYThlZjM1Li45MWMxN2I2MjRmZDE3ZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7cmszNTY4LmR0c2lcJiMzNDtcbkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgXHUwMDI2Y3B1MyB7XG4gXHRjcHUtc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2NwdVx1MDAzZTtcbiB9O1xuIFxuLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi9cbiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuJiM0MztcdHBjcy1oYW5kbGUgPSBcdTAwM2NcdTAwMjZ4cGNzX21paTBcdTAwM2U7XG4mIzQzO1x0bWFuYWdlZCA9IFwmIzM0O2luLWJhbmQtc3RhdHVzXCYjMzQ7O1xuJiM0MztcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4mIzQzO1x0cGh5LW1vZGUgPSBcJiMzNDtzZ21paVwmIzM0OztcbiYjNDM7XHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbiYjNDM7XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZnbWFjMF9taWltXHUwMDNlO1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4gfTtcbiBcbiAvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgV0FOIHBvcnQgKi9cbkBAIC0zNDEsNiAmIzQzOzM1MiwzOSBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG4mIzQzO1x1MDAyNm1kaW8wIHtcbiYjNDM7XHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWQwMDAwLjAxMWFcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MweDNcdTAwM2U7XG4mIzQzO1x0XHRtYXgtc3BlZWQgPSBcdTAwM2MxMDAwXHUwMDNlO1xuJiM0MztcdFx0ZWVlLWJyb2tlbi0xMGd0O1xuJiM0MztcdFx0ZWVlLWJyb2tlbi0xMGdreDQ7XG4mIzQzO1x0XHRlZWUtYnJva2VuLTEwZ2tyO1xuJiM0MztcdFx0cmVzZXQtYXNzZXJ0LXVzID0gXHUwMDNjMjAwMDBcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1kZWFzc2VydC11cyA9IFx1MDAzYzEwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzMgUktfUEM2IEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRsZWRzIHtcbiYjNDM7XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMSB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMiB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4mIzQzO307XG4mIzQzO1xuIFx1MDAyNm1kaW8xIHtcbiBcdHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuIFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcJiMzNDs7XG5AQCAtMzUwLDYgJiM0MzszOTQsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiBcdFx0cngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MxNTAwXHUwMDNlO1xuIFx0XHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0bGVkcyB7XG4mIzQzO1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdFx0bGVkQDEge1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcdTAwM2U7XG4mIzQzO1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuJiM0MztcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcJiMzNDtrZWVwXCYjMzQ7O1xuJiM0MztcdFx0XHR9O1xuJiM0MztcbiYjNDM7XHRcdFx0bGVkQDIge1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfR1JFRU5cdTAwM2U7XG4mIzQzO1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuJiM0MztcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcJiMzNDtrZWVwXCYjMzQ7O1xuJiM0MztcdFx0XHR9O1xuJiM0MztcdFx0fTtcbiBcdH07XG4gfTtcbiBcbkBAIC01ODYsMyAmIzQzOzY0OSwxMyBAQCBcdTAwMjZ4aW4zMmsge1xuIFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4gXHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZjbGszMmtfb3V0MVx1MDAzZTtcbiB9O1xuJiM0MztcbiYjNDM7XHUwMDI2eHBjcyB7XG4mIzQzO1x0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiYjNDM7XHRwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4mIzQzO1x0cGh5LW5hbWVzID0gXCYjMzQ7c2VyZGVzXCYjMzQ7O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7XHUwMDI2eHBjc19taWkwIHtcbiYjNDM7XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0Mzt9O1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5pbmRleCAzYmM2NTNmMDI3ZjFmZS4uOTg5ZTE2NGMwZWIzOTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5AQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiBcdH07XG4gXG4mIzQzO1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MztcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkyOiBwY3MtbWlpQDIge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xuJiM0MztcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZpeGVkLWNsb2NrXCYjMzQ7O1xuJiM0MztcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuJiM0MztcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpXCYjMzQ7O1xuJiM0MztcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtY2xvY2tcJiMzNDs7XG4mIzQzO1x0XHRjbG9jay1mcmVxdWVuY3kgPSBcdTAwM2MxMjUwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDtjbGtfZ21hYzFfeHBjc19taWlcJiMzNDs7XG4mIzQzO1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdH07XG4mIzQzO1xuIFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcbiBcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3JvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcJiMzNDssIFwmIzM0O3N5c2NvblwmIzM0OztcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYWYuLjUwODhhY2MwNjk4MmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuQEAgLTE3MCw2ICYjNDM7MTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4mIzQzO1x0c2VsZWN0IFBDU19YUENTX1JPQ0tDSElQXG4gXHRoZWxwXG4gXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuaW5kZXggYjhkNDY3YmE2ZDcyZDMuLjA4MTMyM2MzMmJjYzExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuQEAgLTU3MiwxMyAmIzQzOzU3Miw0NyBAQCBzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiBcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlO1xuJiM0MztcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbiYjNDM7XHRpbnQgYWRkcjtcbiYjNDM7XG4mIzQzO1x0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuJiM0MztcbiYjNDM7XHRpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OykpIHtcbiYjNDM7XHRcdHBjc25vZGUgPSBmd25vZGVfZmluZF9yZWZlcmVuY2UoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4mIzQzO1x0XHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xuJiM0MztcdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbiYjNDM7XHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIoeHBjcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbiYjNDM7XG4mIzQzO1x0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgaW50ZWxfbWdiZV9wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0eHBjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICppbnRlbF9tZ2JlX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbi1cdC8qIHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VoYXNfeHBjcyBoYXMgYmVlbiBzZXQgdHJ1ZSwgc28gdGhlcmVcbi1cdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXG4tXHQgKiByZXR1cm4gdGhpcyBpZiBwcmVzZW50LlxuLVx0ICovXG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuIH1cbiBcbkBAIC03MDIsNiAmIzQzOzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdCAgICBwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xuIFx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTtcbiBcdFx0cGxhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbiYjNDM7XHRcdHBsYXQtXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xuIFx0XHRwbGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBpbnRlbF9tZ2JlX3NlbGVjdF9wY3M7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXG5pbmRleCAxOWYzNGUxOGJmZWYyYy4uOWFmMzJjMjZmOWMxNDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggJiM0Mzs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjE5Li5lY2E0ODJiNGI2YmZjMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5AQCAtNDcsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdHZvaWQgKCpzZXRfdG9fcmdtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxuIFx0XHRcdCAgICAgaW50IHR4X2RlbGF5LCBpbnQgcnhfZGVsYXkpO1xuIFx0dm9pZCAoKnNldF90b19ybWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XG4mIzQzO1x0dm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuIFx0aW50ICgqc2V0X3NwZWVkKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTtcbiBcdHZvaWQgKCppbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XG5AQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXHRib29sIHBocF9ncmZfcmVxdWlyZWQ7XG4gXHRib29sIHJlZ3NfdmFsaWQ7XG4gXHR1MzIgcmVnc1tdO1xuQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHtcbiBcdGJvb2wgaW50ZWdyYXRlZF9waHk7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiAmIzQzOzgxMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTI4X29wcyA9IHtcbiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMVx0XHQweDAzOGNcbiBcbiAvKiBSSzM1NjhfR1JGX0dNQUMwX0NPTjEgXHUwMDI2XHUwMDI2IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqL1xuJiM0MzsjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSVx0XHRHUkZfQ0xSX0JJVCg3KVxuJiM0MzsjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCAmIzQzOzg1NywzMiBAQCBzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3JnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX0NMS19UWF9ETF9DRkcodHhfZGVsYXkpKTtcbiBcbiBcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsXG4mIzQzO1x0XHQgICAgIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSSB8XG4gXHRcdCAgICAgUkszNTY4X0dNQUNfUlhDTEtfRExZX0VOQUJMRSB8XG4gXHRcdCAgICAgUkszNTY4X0dNQUNfVFhDTEtfRExZX0VOQUJMRSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGNvbjE7XG4mIzQzO1xuJiM0MztcdGNvbjEgPSAoYnNwX3ByaXYtXHUwMDNlaWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOlxuJiM0MztcdFx0XHRcdCAgICAgUkszNTY4X0dSRl9HTUFDMF9DT04xO1xuJiM0MztcbiYjNDM7XHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXHUwMDNlZ3JmLCBjb24xLCBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuJiM0MztcdC5zZXRfdG9fc2dtaWkgPSByazM1Njhfc2V0X3RvX3NnbWlpLFxuJiM0MztcbiBcdC5zZXRfc3BlZWQgPSBya19zZXRfY2xrX21hY19zcGVlZCxcbiBcbiBcdC5nbWFjX3BoeV9pbnRmX3NlbF9tYXNrID0gR0VOTUFTS19VMTYoNiwgNCksXG4gXG4gXHQuc3VwcG9ydHNfcm1paSA9IHRydWUsXG4mIzQzO1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0ZGV2X2Vycihic3BfcHJpdi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XFxuXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgcmtfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpwY3Nfbm9kZTtcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbiYjNDM7XG4mIzQzO1x0cGNzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbiYjNDM7XHRpZiAoIXBjc19ub2RlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHhwY3MgPSB4cGNzX3JrX2NyZWF0ZShwcml2LVx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xuJiM0MztcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHhwY3MpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoeHBjcyk7XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJrX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpya19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgJiM0MzsxMzg3LDcgQEAgc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiBcbiBcdGJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3JnbWlpID0gb3BzLVx1MDAzZXN1cHBvcnRzX3JnbWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19yZ21paTtcbiBcdGJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3JtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcm1paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fcm1paTtcbiYjNDM7XHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19zZ21paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19zZ21paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fc2dtaWk7XG4gXG4gXHRpZiAob3BzLVx1MDAzZWluaXQpIHtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZWluaXQoYnNwX3ByaXYpO1xuQEAgLTEzNjEsNiAmIzQzOzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRcdGlmICghYnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldixcbiBcdFx0XHRcJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWRcJiMzNDssIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSw2ICYjNDM7MTQ0MSw5IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRpZiAoYnNwX3ByaXYtXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRcdGdvdG8gc2V0X21vZGU7XG4mIzQzO1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xNDE2LDcgJiM0MzsxNDgxLDggQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdC8qcm1paSBvciByZ21paSovXG4mIzQzO3NldF9tb2RlOlxuJiM0MztcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O2luaXQgZm9yIFJHTUlJXFxuXCYjMzQ7KTtcbkBAIC0xNDQ3LDYgJiM0MzsxNTEzLDExIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19ybWlpKVxuIFx0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paShic3BfcHJpdik7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuJiM0MztcdFx0ZGV2X2luZm8oZGV2LCBcJiMzNDtpbml0IGZvciBTR01JSVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paSlcbiYjNDM7XHRcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paShic3BfcHJpdik7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtOTyBpbnRlcmZhY2UgZGVmaW5lZCFcXG5cJiMzNDspO1xuIFx0fVxuQEAgLTE0ODYsNiAmIzQzOzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxuIFxuIFx0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3JtaWkpXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSwgaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdGlmIChyay1cdTAwM2VzdXBwb3J0c19zZ21paSlcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksIGludGVyZmFjZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJrX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdl8sIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuQEAgLTE2MDIsNiAmIzQzOzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4mIzQzO1x0aWYgKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4mIzQzO1x0XHQvKiBTR01JSSBjbG9jayBhbHdheXMgcnVucyBhdCAxMjUgTUh6ICovXG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xuJiM0MztcdFx0cGxhdF9kYXQtXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xuIFx0aWYgKElTX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbmluZGV4IDEzNjM0OTY1YmMxOWExLi4wMWRmNDc3NmVkYjNmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5AQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbmluZGV4IDFkN2YwYTU3ZDI4ODk3Li42ZDRiYzFmZThmNzUxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5AQCAtNTM5LDggJiM0Mzs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbmluZGV4IGFmZTk4ZmY1YmRjYjA1Li5kMmY3N2YwYzIyM2E3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbkBAIC00MjYsMzYgJiM0Mzs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwmIzM0O3Bjcy1oYW5kbGVcJiMzNDspKSB7XG4tXHRcdHBjc25vZGUgPSBmd25vZGVfZmluZF9yZWZlcmVuY2UoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4tXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4tXHRcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhIFx1MDAyNlx1MDAyNlxuLVx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykge1xuLVx0XHRhZGRyID0gZmZzKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSAtIDE7XG4tXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbi1cdFx0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKHhwY3MpO1xuLVx0fSBlbHNlIHtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdClcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4mIzQzO1x0cmV0ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KHByaXYpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXZpY2UsIHJldCwgXCYjMzQ7Tm8geFBDUyBmb3VuZFxcblwmIzM0Oyk7XG4gXG4tXHRpZiAoeHBjcylcbi1cdFx0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbi1cbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4tXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDYzLDE0ICYjNDM7NDQyLDEwIEBAIHZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQpXG4tXHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfZXhpdChwcml2KTtcbi1cbi1cdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4mIzQzO1x0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KHByaXYpO1xuIH1cbiBcbiBzdHJ1Y3Qgc3RtbWFjX2Nsa19yYXRlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXG5pbmRleCBlNDE3ZmQ2NmY2NjBhZC4uMzI4NmJjOTNlNzAyNjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICYjNDM7MTIsMjggQEAgY29uZmlnIFBDU19YUENTXG4gXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xuIFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXG4gXG4mIzQzO2lmIFBDU19YUENTXG4mIzQzO1xuJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0ZGVmYXVsdCBQQ1NfWFBDU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4mIzQzO1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4mIzQzO1x0ICBkYXRhIGZvciBzZXR1cC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7Y29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4mIzQzO1xuJiM0MztcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7ZW5kaWYgIyBQQ1NfWFBDU1xuJiM0MztcbiBjb25maWcgUENTX0xZTlhcbiBcdHRyaXN0YXRlXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5pbmRleCA0Zjc5MjA2MThiOTAwNS4uYzgwOWI3Zjk0MmE1MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuQEAgLTEsMTAgJiM0MzsxLDkgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcbiBcbi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUylcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXG4tXHRcdFx0XHQgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4tXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQmIzQzOz0gcGNzX3hwY3Mub1xuJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1MpICYjNDM7PSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cbiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSAmIzQzOz0gcGNzLXhwY3MtcGxhdC5vXG4mIzQzO29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJUCkgJiM0Mzs9IHBjcy14cGNzLXJrLm9cbiBvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCYjNDM7PSBwY3MtbHlueC5vXG4gb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG4gb2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lZDk2OWEzOGQ1NDRkNVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbkBAIC0wLDAgJiM0MzsxLDUyNiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKlxuJiM0MzsgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXJcbiYjNDM7ICpcbiYjNDM7ICogQmFzZWQgb24gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pblxuJiM0MzsgKlxuJiM0MzsgKiBBZGFwdGVkIGZvciBSb2NrY2hpcCBTb0NzLCB3aXRoIHJlZmVyZW5jZSB0byB0aGUgUm9ja2NoaXAgT0VNIGRyaXZlci5cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnRcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fZG9tYWluLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2l6ZXMuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cGNzLXhwY3MuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RydWN0IGR3X3hwY3Nfcmsge1xuJiM0MztcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cztcbiYjNDM7XHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XG4mIzQzO1x0c3RydWN0IGNsayAqY3NyX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICplZWVfY2xrO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRwdHJkaWZmX3QgY3NyO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcmVhZGwocHhwY3MtXHUwMDNlcmVnX2Jhc2UgJiM0MzsgKGNzciBcdTAwM2NcdTAwM2MgMikpIFx1MDAyNiAweGZmZmY7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHB0cmRpZmZfdCBjc3I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHR3cml0ZWwodmFsLCBweHBjcy1cdTAwM2VyZWdfYmFzZSAmIzQzOyAoY3NyIFx1MDAzY1x1MDAzYyAyKSk7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVx0MlxuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkyXHQzXG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTNcdDRcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXHQ2XG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSVx0N1xuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgeHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoaW50IGFkZHIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gIShhZGRyIFx1MDAzYyAwIHx8IGFkZHIgXHUwMDNlIDMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoZGV2KSB7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbiYjNDM7XHRjYXNlIE1ESU9fTU1EX1ZFTkQyOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGFkZHIpIHtcbiYjNDM7XHRjYXNlIDA6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbiYjNDM7XHRjYXNlIDE6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4mIzQzO1x0Y2FzZSAyOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuJiM0MztcdGNhc2UgMzpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGRldikge1xuJiM0MztcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOWElPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbiYjNDM7XHRzd2l0Y2ggKHJlZykge1xuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbiYjNDM7XHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOlxuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoYWRkcikge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGNhc2UgMTpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbiYjNDM7XHRjYXNlIDI6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBkZXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMHhmZmZmO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IGRldjtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcbiYjNDM7XHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFweHBjcylcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VwZGV2ID0gcGRldjtcbiYjNDM7XG4mIzQzO1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBweHBjcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwmIzM0O3NlcmRlc1wmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSxcbiYjNDM7XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1xuJiM0MztcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBwb3dlci1kb21haW5zXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfaW5pdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIHBtX2RvbWFpbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcXG5cJiMzNDspO1xuJiM0MztcdFx0Z290byBzZXJkZXNfcGh5O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO3NlcmRlc19waHk6XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO3BtX2RvbWFpbjpcbiYjNDM7XHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVx1MDAzZXBkZXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IHJlc291cmNlICpyZXM7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XG4mIzQzO1x0aWYgKCFyZXMpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtObyByZWctc3BhY2UgZm91bmRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFx1MDAzYyBTWl8yTSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ludmFsaWQgcmVnLXNwYWNlIHNpemVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSkpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlY3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwmIzM0O2NzclwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSxcbiYjNDM7XHRcdFx0XHRcdCBcJiMzNDtGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuJiM0MztcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7ZWVlXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O0ZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgRUVFIGNsb2NrOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdHN0YXRpYyBhdG9taWNfdCBpZCA9IEFUT01JQ19JTklUKC0xKTtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgMCk7XG4mIzQzO1x0aWYgKCFidXMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSb2NrY2hpcCBEVyBYUENTIE1DSS9BUEIzXCYjMzQ7O1xuJiM0MztcdGJ1cy1cdTAwM2VyZWFkID0geHBjc19ya19yZWFkX2MyMjtcbiYjNDM7XHRidXMtXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcbiYjNDM7XHRidXMtXHUwMDNlcmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1O1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTtcbiYjNDM7XHRidXMtXHUwMDNlcGh5X21hc2sgPSB+MDtcbiYjNDM7XHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuJiM0MztcdGJ1cy1cdTAwM2Vwcml2ID0gcHhwY3M7XG4mIzQzO1xuJiM0MztcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLFxuJiM0MztcdFx0IFwmIzM0O3JvY2tjaGlwX2R3eHBjcy0leFwmIzM0OywgYXRvbWljX2luY19yZXR1cm4oXHUwMDI2aWQpKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNRElPLWJ1cyBoZXJlIHNlcnZlcyBhcyBqdXN0IGEgYmFjay1lbmQgZW5naW5lIGFic3RyYWN0aW5nIG91dFxuJiM0MztcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcbiYjNDM7XHQgKiBhY2Nlc3MuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlYnVzID0gYnVzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRweHBjcyA9IHhwY3NfcmtfY3JlYXRlX2RhdGEocGRldik7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXG4mIzQzO1x0ICogbXVzdCBiZSBwb3dlcmVkIG9uIGJlZm9yZSBhbnkgcmVnaXN0ZXIgYWNjZXNzLCBvdGhlcndpc2UgdGhlIFNvQyB3aWxsXG4mIzQzO1x0ICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogQWNjZXNzaW5nIHRoZSBYUENTIHJlZ2lzdGVycyBhbHNvIHJlcXVpcmVzIGEgVFggY2xvY2sgZnJvbSB0aGUgU2VyRGVzLFxuJiM0MztcdCAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X2luaXQocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX2luaXRfY2xrKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4mIzQzO1x0dTMyIHBvcnQ7XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoKGludClwb3J0KSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgWFBDUyBwZGV2IGlzIGF0dGFjaGVkIHRvIHRoZSBwYXJlbnQgbm9kZSAqL1xuJiM0MztcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xuJiM0MztcdGlmICghcGNzX25wKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwY3NfbnApKSB7XG4mIzQzO1x0XHRvZl9ub2RlX3B1dChwY3NfbnApO1xuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShwY3NfbnApO1xuJiM0MztcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4mIzQzO1x0aWYgKCFwZGV2KVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4mIzQzO1x0aWYgKCFweHBjcyB8fCAhcHhwY3MtXHUwMDNlYnVzKSB7XG4mIzQzO1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHhwY3MtXHUwMDNlYnVzLCAoaW50KXBvcnQpO1xuJiM0MztcdGlmIChJU19FUlIoeHBjcykpIHtcbiYjNDM7XHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdFx0cmV0dXJuIHhwY3M7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKTtcbiYjNDM7XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4geHBjcztcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh4cGNzX3JrX2NyZWF0ZSk7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuJiM0MztcbiYjNDM7XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlY3NyX2Nsayk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtXHUwMDNlY3NyX2Nsayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB4cGNzX3JrX3BtX29wcyA9IHtcbiYjNDM7XHRTRVRfUlVOVElNRV9QTV9PUFMoeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4mIzQzO1x0XHRcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUsXG4mIzQzO1x0XHRcdCAgIE5VTEwpXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OyB9LFxuJiM0MztcdHsgLyogc2VudGluZWwgKi8gfSxcbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeHBjc19ya19vZl9pZHMpO1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgeHBjc19ya19kcml2ZXIgPSB7XG4mIzQzO1x0LnByb2JlID0geHBjc19ya19wcm9iZSxcbiYjNDM7XHQuZHJpdmVyID0ge1xuJiM0MztcdFx0Lm5hbWUgPSBcJiMzNDtya194cGNzLWR3eHBjc1wmIzM0OyxcbiYjNDM7XHRcdC5wbSA9IFx1MDAyNnhwY3NfcmtfcG1fb3BzLFxuJiM0MztcdFx0Lm9mX21hdGNoX3RhYmxlID0geHBjc19ya19vZl9pZHMsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw2ICYjNDM7ODE2LDExIEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdC8qIENsZWFyIENMMzcgQU4gY29tcGxldGUgc3RhdHVzICovXG4mIzQzO1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbiBcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbkBAIC04ODQsNyAmIzQzOzg4OSw3IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFxuIFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkge1xuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbi1cdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbiYjNDM7XHRcdFx0XHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTEwNTgsNiAmIzQzOzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcbiBcdC8qIFJlc2V0IGxpbmtfc3RhdGUgKi9cbiBcdHN0YXRlLVx1MDAzZWxpbmsgPSBmYWxzZTtcbiYjNDM7XHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IGZhbHNlO1xuIFx0c3RhdGUtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XG4gXHRzdGF0ZS1cdTAwM2VwYXVzZSA9IDA7XG5AQCAtMTA2OSw2ICYjNDM7MTA3NSw4IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IHJldCBcdTAwMjYgRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSO1xuJiM0MztcbiBcdGlmIChyZXQgXHUwMDI2IERXX1ZSX01JSV9DMzdfQU5TR01fU1BfTE5LU1RTKSB7XG4gXHRcdGludCBzcGVlZF92YWx1ZTtcbiBcbkBAIC0xMDg2LDcgJiM0MzsxMDk0LDI0IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuIFx0XHRlbHNlXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4tXHR9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi9cbiYjNDM7XHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4mIzQzO1x0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuJiM0MztcbiYjNDM7XHRpZiAoeHBjcy1cdTAwM2VpbmZvLnBtYSAhPSBXWF9UWEdCRV9YUENTX1BNQV8xMEdfSUQpIHtcbiYjNDM7XHRcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xuJiM0MztcdFx0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuJiM0MztcdFx0XHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxuJiM0MztcdFx0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IERXX1ZSX01JSV9BTl9TVFNfQzM3X0FOQ01QTFRfSU5UUikge1xuIFx0XHRpbnQgc3BlZWQsIGR1cGxleDtcbiBcbiBcdFx0c3RhdGUtXHUwMDNlbGluayA9IHRydWU7XG5AQCAtMTExMiw3ICYjNDM7MTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRlbHNlIGlmIChkdXBsZXggXHUwMDI2IEFEVkVSVElTRV8xMDAwWEhBTEYpXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4gXG4tXHRcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jIGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbmluZGV4IDJiMGYxNTJmNTQ3MDkxLi5mZjI5MGJjMTg1ODlhZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuQEAgLTE4Niw2ICYjNDM7MTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5O1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMF9zZWw7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDtcbiYjNDM7XHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xuIH07XG5AQCAtMjEyLDYgJiM0MzsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcbiBcdGJvb2wgZW5hYmxlX3NzYztcbiBcdGJvb2wgZXh0X3JlZmNsaztcbiBcdHN0cnVjdCBjbGsgKnJlZmNsaztcbiYjNDM7XHR1MzIgc2dtaWlfbWFjX3NlbDtcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2LFxuQEAgLTM3NSw2ICYjNDM7Mzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlcbiBcbiBcdHByaXYtXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXCYjMzQ7cm9ja2NoaXAsZXh0LXJlZmNsa1wmIzM0Oyk7XG4gXG4mIzQzO1x0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsID0gMDtcbiYjNDM7XHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDtyb2NrY2hpcCxzZ21paS1tYWMtc2VsXCYjMzQ7LCBcdTAwMjZwcml2LVx1MDAzZXNnbWlpX21hY19zZWwpO1xuJiM0MztcbiBcdHByaXYtXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXCYjMzQ7cGh5XCYjMzQ7KTtcbiBcdC8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi9cbiBcdGlmIChQVFJfRVJSKHByaXYtXHUwMDNlcGh5X3JzdCkgPT0gLUVOT0VOVClcbkBAIC04NzMsNiAmIzQzOzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfVFlQRV9TR01JSTpcbiYjNDM7XHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2dtaWlfbWFjX3NlbCxcbiYjNDM7XHRcdFx0XHRcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCBcdTAwM2UgMCk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfeHBjc19waHlfcmVhZHksIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfcGh5bW9kZV9zZWwsIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7XG5AQCAtOTg0LDYgJiM0Mzs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7XG4gXHQuY29uM19mb3Jfc2F0YVx0XHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXG4gXHQvKiBwaXBlLWdyZiAqL1xuIFx0LnBpcGVfY29uMF9mb3Jfc2F0YVx0PSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LFxuJiM0MztcdC5waXBlX3NnbWlpX21hY19zZWxcdD0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSxcbiBcdC5waXBlX3hwY3NfcGh5X3JlYWR5XHQ9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sXG4gXHQudTNvdGcwX3BvcnRfZW5cdFx0PSB7IDB4MDEwNCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXG4gXHQudTNvdGcxX3BvcnRfZW5cdFx0PSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjg3MjNkNWJkNzVjY2Vcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgJiM0MzsxLDExIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzOyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDssCiAgICAmIzM0O1BDU19YUENTJiMzNDssCiAgICAmIzM0O1BDU19YUENTX1JPQ0tDSElQJiMzNDssCiAgICAmIzM0O0RXTUFDX1JPQ0tDSElQJiMzNDssCiAgICAmIzM0O1BIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQk9fUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4JiMzNDssCiAgICAmIzM0O3hwY3NfZ2V0X3N0YXRlX2MzN19zZ21paSYjMzQ7LAogICAgJiMzNDtpbnRlbF9tZ2JlX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3N0bW1hY19wY3Nfc2V0dXAmIzM0OywKICAgICYjMzQ7cmtfcGNzX2luaXQmIzM0OywKICAgICYjMzQ7eHBjc19ya19wcm9iZSYjMzQ7LAogICAgJiMzNDt4cGNzX3JrX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjggWFBDUywgd2hpY2ggaW5jbHVkZXMgYSBuZXcgcGxhdGZvcm0gZHJpdmVyIGFuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBnZW5lcmljIHBjcy14cGNzIGRyaXZlciBhbmQgc3RtbWFjIGRyaXZlci4gV2hpbGUgdGhlIFJvY2tjaGlwLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBtaWdodCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMsIHRoZSBwYXRjaCBhbHNvIHJlZmFjdG9ycyBob3cgdGhlIFBDUyBpcyBpbml0aWFsaXplZCBpbiB0aGUgZ2VuZXJpYyBzdG1tYWMgZHJpdmVyIGFuZCBtb2RpZmllcyB0aGUgSW50ZWwgbUdCRSBQQ0kgZHJpdmVyIChkd21hYy1pbnRlbC5jKSB0byB1c2UgdGhlIG5ldyBpbml0aWFsaXphdGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgaXQgbW9kaWZpZXMgdGhlIGdlbmVyaWMgcGNzLXhwY3MuYyBkcml2ZXImIzM5O3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCkBAIC0wLDAgJiM0MzsxLDEyNiBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIENvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwKJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuCiYjNDM7ICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKQomIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWEKJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuCiYjNDM7CiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYQomIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuCiYjNDM7ICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLgomIzQzOwomIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIChwY3MtbWlpQDAuLjMpIHRoYXQgY2FuIGJlCiYjNDM7ICBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmQgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycwomIzQzOyAgdmlhIHRoZSBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzCiYjNDM7CiYjNDM7ICAmIzM5OyNhZGRyZXNzLWNlbGxzJiMzOTs6CiYjNDM7ICAgIGNvbnN0OiAxCiYjNDM7CiYjNDM7ICAmIzM5OyNzaXplLWNlbGxzJiMzOTs6CiYjNDM7ICAgIGNvbnN0OiAwCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBYUENTIHJlZ2lzdGVyIHNwYWNlIG1hcHBlZCBvdmVyIHRoZQomIzQzOyAgICAgIEFQQjMgYnVzLgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgY2xvY2tzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIENsb2NrIHNvdXJjZXMgZm9yIHRoZSBYUENTOgomIzQzOyAgICAgIC0gY3NyOiBBUEIzIGJ1cyBpbnRlcmZhY2UgY2xvY2sgKGNsa19jc3JfaSksIHJlcXVpcmVkIGZvciByZWdpc3RlcgomIzQzOyAgICAgICAgYWNjZXNzLgomIzQzOyAgICAgIC0gZWVlOiBFRUUgY2xvY2sgKGNsa19lZWVfaSksIHJlcXVpcmVkIGZvciBFbmVyZ3kgRWZmaWNpZW50CiYjNDM7ICAgICAgICBFdGhlcm5ldCAoRUVFKSBvcGVyYXRpb24uCiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogY3NyCiYjNDM7ICAgICAgLSBjb25zdDogZWVlCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIFRoZSBwaGFuZGxlIG9mIFNlckRlcyBQSFkgKE5hbmVuZyBDb21ibyBQSFkpIHRoYXQgcHJvdmlkZXMKJiM0MzsgICAgICB0aGUgc2VyaWFsIGxhbmVzIGZvciAxMDAwQkFTRS1YIC8gU0dNSUkgLyBRU0dNSUkuCiYjNDM7ICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDUwomIzQzOyAgICAgIHJlZ2lzdGVyIGFjY2Vzcy4KJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHBoeS1uYW1lczoKJiM0MzsgICAgY29uc3Q6IHNlcmRlcwomIzQzOwomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgZGVzY3JpcHRpb246IHwKJiM0MzsgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLgomIzQzOyAgICAgIE9uIFJLMzU2OCB0aGlzIGlzIHR5cGljYWxseSB0aGUgUERfUElQRSBwb3dlciBkb21haW4sIHdoaWNoIGFsc28KJiM0MzsgICAgICBzdXBwbGllcyB0aGUgU2VyRGVzIFBIWS4KJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MztwYXR0ZXJuUHJvcGVydGllczoKJiM0MzsgICYjMzQ7XnBjcy1taWlAWzAtM10kJiMzNDs6CiYjNDM7ICAgIHR5cGU6IG9iamVjdAomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuCiYjNDM7ICAgICAgVGhlIHBvcnQgbnVtYmVyIGlzIHNwZWNpZmllZCBieSB0aGUgcmVnIHByb3BlcnR5ICgwLi4zKS4KJiM0MzsgICAgICBUaGUgcG9ydCBpcyBsaW5rZWQgdG8gYW4gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXIgdmlhIHRoZQomIzQzOyAgICAgIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyYjMzk7cyBkZXZpY2UgdHJlZSBub2RlLgomIzQzOwomIzQzOyAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgIHJlZzoKJiM0MzsgICAgICAgIG1pbmltdW06IDAKJiM0MzsgICAgICAgIG1heGltdW06IDMKJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuCiYjNDM7CiYjNDM7ICAgICAgc3RhdHVzOiB0cnVlCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7CiYjNDM7ICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSBjbG9ja3MKJiM0MzsgIC0gY2xvY2stbmFtZXMKJiM0MzsKJiM0MzthZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHBjc0BmZGEwMDAwMCB7CiYjNDM7ICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OzsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICByZWcgPSAmbHQ7MHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwJmd0OzsKJiM0MzsgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtjcnUgUENMS19YUENTJmd0OywgJmx0OyZhbXA7Y3J1IENMS19YUENTX0VFRSZndDs7CiYjNDM7ICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2NzciYjMzQ7LCAmIzM0O2VlZSYjMzQ7OwomIzQzOyAgICAgIHBoeXMgPSAmbHQ7JmFtcDtjb21icGh5MiBQSFlfVFlQRV9TR01JSSZndDs7CiYjNDM7ICAgICAgcGh5LW5hbWVzID0gJiMzNDtzZXJkZXMmIzM0OzsKJiM0MzsgICAgICBwb3dlci1kb21haW5zID0gJmx0OyZhbXA7cG93ZXIgUkszNTY4X1BEX1BJUEUmZ3Q7OwomIzQzOwomIzQzOyAgICAgIHBjcy1taWlAMCB7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MCZndDs7CiYjNDM7ICAgICAgfTsKJiM0MzsgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCmluZGV4IDM3OWIwOGJkOWU5N2E2Li42MTczMTkyZTMxYWIyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCkBAIC04MCw2ICYjNDM7ODAsMTMgQEAgcHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjoKICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLgogCiYjNDM7ICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOgomIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsgICAgZW51bTogWzAsIDFdCiYjNDM7ICAgIGRlZmF1bHQ6IDAKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci4KJiM0MzsKICAgJiMzNDsjcGh5LWNlbGxzJiMzNDs6CiAgICAgY29uc3Q6IDEKIApkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA4MDZiZDJkODBkMTUzNS4uOGNiYTZhMGEyZGQwMzQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC0yMzQ2Myw2ICYjNDM7MjM0NjMsMTUgQEAgUzoJTWFpbnRhaW5lZAogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbAogRjoJc291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qCiAKJiM0MztST0NLQ0hJUCBYUENTIERSSVZFUgomIzQzO006CUNvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwomIzQzO0w6CWxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKJiM0MztTOglNYWludGFpbmVkCiYjNDM7RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwKJiM0MztGOglkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwomIzQzO0Y6CWluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmgKJiM0MzsKIFJPQ0tFUiBEUklWRVIKIE06CUppcmkgUGlya28gJmx0O2ppcmlAcmVzbnVsbGkudXMmZ3Q7CiBMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzCmluZGV4IDU4YzEwNTJiYThlZjM1Li45MWMxN2I2MjRmZDE3ZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMKQEAgLTMsNiAmIzQzOzMsNyBAQAogL2R0cy12MS87CiAKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvbGVkcy9jb21tb24uaCZndDsKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3Mvc29jL3JvY2tjaGlwLHZvcDIuaCZndDsKICNpbmNsdWRlICYjMzQ7cmszNTY4LmR0c2kmIzM0OwpAQCAtMjQyLDYgJiM0MzsyNDMsNyBAQCAmYW1wO2NvbWJwaHkxIHsKIAogJmFtcDtjb21icGh5MiB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiYjNDM7CXJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSAmbHQ7MCZndDs7CiB9OwogCiAmYW1wO2NwdTAgewpAQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgJmFtcDtjcHUzIHsKIAljcHUtc3VwcGx5ID0gJmx0OyZhbXA7dmRkX2NwdSZndDs7CiB9OwogCi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovCiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovCiAmYW1wO2dtYWMwIHsKLQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiYjNDM7CWFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2NydSBTQ0xLX0dNQUMwX1JYX1RYJmd0OzsKJiM0MzsJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9ICZsdDsmYW1wO3hwY3NfZ21hYzBfY2xrJmd0OzsKJiM0MzsJcGNzLWhhbmRsZSA9ICZsdDsmYW1wO3hwY3NfbWlpMCZndDs7CiYjNDM7CW1hbmFnZWQgPSAmIzM0O2luLWJhbmQtc3RhdHVzJiMzNDs7CiYjNDM7CXBoeS1oYW5kbGUgPSAmbHQ7JmFtcDtzZ21paV9waHkmZ3Q7OwomIzQzOwlwaHktbW9kZSA9ICYjMzQ7c2dtaWkmIzM0OzsKJiM0MzsJcGh5LXN1cHBseSA9ICZsdDsmYW1wO3ZjY18zdjMmZ3Q7OwomIzQzOwlwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7CXBpbmN0cmwtMCA9ICZsdDsmYW1wO2dtYWMwX21paW0mZ3Q7OwomIzQzOwlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIH07CiAKIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqLwpAQCAtMzQxLDYgJiM0MzszNTIsMzkgQEAgJmFtcDtpMnMwXzhjaCB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiB9OwogCiYjNDM7JmFtcDttZGlvMCB7CiYjNDM7CXNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7ZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgzJmd0OzsKJiM0MzsJCW1heC1zcGVlZCA9ICZsdDsxMDAwJmd0OzsKJiM0MzsJCWVlZS1icm9rZW4tMTBndDsKJiM0MzsJCWVlZS1icm9rZW4tMTBna3g0OwomIzQzOwkJZWVlLWJyb2tlbi0xMGdrcjsKJiM0MzsJCXJlc2V0LWFzc2VydC11cyA9ICZsdDsyMDAwMCZndDs7CiYjNDM7CQlyZXNldC1kZWFzc2VydC11cyA9ICZsdDsxMDAwMDAmZ3Q7OwomIzQzOwkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDtncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XJmd0OzsKJiM0MzsKJiM0MzsJCWxlZHMgewomIzQzOwkJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJCSNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOwkJCWxlZEAxIHsKJiM0MzsJCQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfQU1CRVImZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWxlZEAyIHsKJiM0MzsJCQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfR1JFRU4mZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwkJfTsKJiM0MzsJfTsKJiM0Mzt9OwomIzQzOwogJmFtcDttZGlvMSB7CiAJcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiAJCWNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyJiMzNDs7CkBAIC0zNTAsNiAmIzQzOzM5NCwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHsKIAkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDtncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XJmd0OzsKIAkJcngtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MTUwMCZndDs7CiAJCXR4LWludGVybmFsLWRlbGF5LXBzID0gJmx0OzE1MDAmZ3Q7OwomIzQzOwomIzQzOwkJbGVkcyB7CiYjNDM7CQkJI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CQkJbGVkQDEgewomIzQzOwkJCQlyZWcgPSAmbHQ7MSZndDs7CiYjNDM7CQkJCWNvbG9yID0gJmx0O0xFRF9DT0xPUl9JRF9BTUJFUiZndDs7CiYjNDM7CQkJCWZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjsKJiM0MzsJCQkJZGVmYXVsdC1zdGF0ZSA9ICYjMzQ7a2VlcCYjMzQ7OwomIzQzOwkJCX07CiYjNDM7CiYjNDM7CQkJbGVkQDIgewomIzQzOwkJCQlyZWcgPSAmbHQ7MiZndDs7CiYjNDM7CQkJCWNvbG9yID0gJmx0O0xFRF9DT0xPUl9JRF9HUkVFTiZndDs7CiYjNDM7CQkJCWZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjsKJiM0MzsJCQkJZGVmYXVsdC1zdGF0ZSA9ICYjMzQ7a2VlcCYjMzQ7OwomIzQzOwkJCX07CiYjNDM7CQl9OwogCX07CiB9OwogCkBAIC01ODYsMyAmIzQzOzY0OSwxMyBAQCAmYW1wO3hpbjMyayB7CiAJcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwogCXBpbmN0cmwtMCA9ICZsdDsmYW1wO2NsazMya19vdXQxJmd0OzsKIH07CiYjNDM7CiYjNDM7JmFtcDt4cGNzIHsKJiM0MzsJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiYjNDM7CXBoeXMgPSAmbHQ7JmFtcDtjb21icGh5MiBQSFlfVFlQRV9TR01JSSZndDs7CiYjNDM7CXBoeS1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7fTsKJiM0MzsKJiM0MzsmYW1wO3hwY3NfbWlpMCB7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzO307CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQppbmRleCAzYmM2NTNmMDI3ZjFmZS4uOTg5ZTE2NGMwZWIzOTggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQpAQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAgewogCQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiAJfTsKIAomIzQzOwl4cGNzOiBwY3NAZmRhMDAwMDAgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OzsKJiM0MzsJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO2NydSBQQ0xLX1hQQ1MmZ3Q7LCAmbHQ7JmFtcDtjcnUgQ0xLX1hQQ1NfRUVFJmd0OzsKJiM0MzsJCWNsb2NrLW5hbWVzID0gJiMzNDtjc3ImIzM0OywgJiMzNDtlZWUmIzM0OzsKJiM0MzsJCXBvd2VyLWRvbWFpbnMgPSAmbHQ7JmFtcDtwb3dlciBSSzM1NjhfUERfUElQRSZndDs7CiYjNDM7CQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiYjNDM7CiYjNDM7CQl4cGNzX21paTA6IHBjcy1taWlAMCB7CiYjNDM7CQkJcmVnID0gJmx0OzAmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTE6IHBjcy1taWlAMSB7CiYjNDM7CQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTI6IHBjcy1taWlAMiB7CiYjNDM7CQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTM6IHBjcy1taWlAMyB7CiYjNDM7CQkJcmVnID0gJmx0OzMmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CX07CiYjNDM7CiYjNDM7CXhwY3NfZ21hYzBfY2xrOiB4cGNzLWdtYWMwLWNsb2NrIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWNsb2NrJiMzNDs7CiYjNDM7CQljbG9jay1mcmVxdWVuY3kgPSAmbHQ7MTI1MDAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpJiMzNDs7CiYjNDM7CQkjY2xvY2stY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CX07CiYjNDM7CiYjNDM7CXhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWNsb2NrJiMzNDs7CiYjNDM7CQljbG9jay1mcmVxdWVuY3kgPSAmbHQ7MTI1MDAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICYjMzQ7Y2xrX2dtYWMxX3hwY3NfbWlpJiMzNDs7CiYjNDM7CQkjY2xvY2stY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CX07CiYjNDM7CiAJcGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHsKIAkJY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXBpcGUtcGh5LWdyZiYjMzQ7LCAmIzM0O3N5c2NvbiYjMzQ7OwogCQlyZWcgPSAmbHQ7MHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMCZndDs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwppbmRleCBlM2RkNWFkZGE1YWNhZi4uNTA4OGFjYzA2OTgyZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwpAQCAtMTcwLDYgJiM0MzsxNzAsNyBAQCBjb25maWcgRFdNQUNfUk9DS0NISVAKIAlkZWZhdWx0IEFSQ0hfUk9DS0NISVAKIAlkZXBlbmRzIG9uIE9GICZhbXA7JmFtcDsgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQogCXNlbGVjdCBNRkRfU1lTQ09OCiYjNDM7CXNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKaW5kZXggYjhkNDY3YmE2ZDcyZDMuLjA4MTMyM2MzMmJjYzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKQEAgLTU3MiwxMyAmIzQzOzU3Miw0NyBAQCBzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCkKIAlwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtuZWVkc19yZXNldCA9IHRydWU7CiB9CiAKJiM0MztzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlOwomIzQzOwlzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7CiYjNDM7CWludCBhZGRyOwomIzQzOwomIzQzOwlkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LSZndDtkZXZpY2UpOwomIzQzOwomIzQzOwlpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgJiMzNDtwY3MtaGFuZGxlJiMzNDspKSB7CiYjNDM7CQlwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJCXhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7CiYjNDM7CQlmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWFkZHIgPSBmZnMocHJpdi0mZ3Q7cGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2spIC0gMTsKJiM0MzsJCXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtJmd0O21paSwgYWRkcik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwl4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtJmd0O3BsYXQtJmd0O211bHRfZmFjdF8xMDBucyk7CiYjNDM7CiYjNDM7CXByaXYtJmd0O2h3LSZndDt4cGNzID0geHBjczsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJaWYgKCFwcml2LSZndDtody0mZ3Q7eHBjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJeHBjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0MzsJcHJpdi0mZ3Q7aHctJmd0O3hwY3MgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKLQkvKiBwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtoYXNfeHBjcyBoYXMgYmVlbiBzZXQgdHJ1ZSwgc28gdGhlcmUKLQkgKiBzaG91bGQgYWx3YXlzIGJlIGFuIFhQQ1MuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGFsd2F5cwotCSAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuCi0JICovCiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAlyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LSZndDtody0mZ3Q7eHBjcyk7CiB9CiAKQEAgLTcwMiw2ICYjNDM7NzM2LDggQEAgc3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCSAgICBwbGF0LSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHsKIAkJcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTsKIAkJcGxhdC0mZ3Q7ZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJcGxhdC0mZ3Q7cGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0OwomIzQzOwkJcGxhdC0mZ3Q7cGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0OwogCQlwbGF0LSZndDtzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCmluZGV4IDE5ZjM0ZTE4YmZlZjJjLi45YWYzMmMyNmY5YzE0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYwpAQCAtODEsOCAmIzQzOzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQltaWljX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKTsKJiM0MzsJaWYgKCFwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MgPSBOVUxMOwogfQogCiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwppbmRleCA4ZDcwNDJlNjg5MjYxOS4uZWNhNDgyYjRiNmJmYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwpAQCAtMjAsNiAmIzQzOzIwLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDsKQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7CiAJdm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTsKIAl2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTsKJiM0MzsJdm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwogCWludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTsKIAl2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwpAQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHsKIAlib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwOwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCWJvb2wgcGhwX2dyZl9yZXF1aXJlZDsKIAlib29sIHJlZ3NfdmFsaWQ7CiAJdTMyIHJlZ3NbXTsKQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHsKIAlib29sIGludGVncmF0ZWRfcGh5OwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCiAJc3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7CiAJaW50IG51bV9jbGtzOwpAQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7CiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMQkJMHgwMzhjCiAKIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSAmYW1wOyZhbXA7IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqLwomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJCQlHUkZfQ0xSX0JJVCg3KQomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkJCUdSRl9CSVQoNykKICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMCQkJR1JGX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSCQlHUkZfQ0xSX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFCQlHUkZfQklUKDEpCkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdiwKIAkJICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7CiAKIAlyZWdtYXBfd3JpdGUoYnNwX3ByaXYtJmd0O2dyZiwgY29uMSwKJiM0MzsJCSAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHwKIAkJICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHwKIAkJICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fc2dtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiYjNDM7ewomIzQzOwl1MzIgY29uMTsKJiM0MzsKJiM0MzsJY29uMSA9IChic3BfcHJpdi0mZ3Q7aWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOgomIzQzOwkJCQkgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTsKJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGJzcF9wcml2LSZndDtncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7CiAJLmluaXQgPSByazM1NjhfaW5pdCwKIAkuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSwKJiM0MzsJLnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksCiYjNDM7CiAJLnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLAogCiAJLmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSwKIAogCS5zdXBwb3J0c19ybWlpID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSwKIAogCS5yZWdzX3ZhbGlkID0gdHJ1ZSwKIAkucmVncyA9IHsKQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LSZndDtkZXZpY2UtJmd0O29mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwomIzQzOwlwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJaWYgKCFwY3Nfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi0mZ3Q7ZGV2aWNlLCBwY3Nfbm9kZSk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ub2RlKTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IE5VTEw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQkJCQkgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCwKIAkJCQkJICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcykKQEAgLTEzMzAsNiAmIzQzOzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiAJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3JnbWlpID0gb3BzLSZndDtzdXBwb3J0c19yZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3JnbWlpOwogCWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpID0gb3BzLSZndDtzdXBwb3J0c19ybWlpIHx8ICEhb3BzLSZndDtzZXRfdG9fcm1paTsKJiM0MzsJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpID0gb3BzLSZndDtzdXBwb3J0c19zZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3NnbWlpOwogCiAJaWYgKG9wcy0mZ3Q7aW5pdCkgewogCQlyZXQgPSBvcHMtJmd0O2luaXQoYnNwX3ByaXYpOwpAQCAtMTM2MSw2ICYjNDM7MTQxOSwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfY2hlY2tfb3BzKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoIWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWlmICghYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LAogCQkJJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWQmIzM0OywgYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CkBAIC0xMzc5LDYgJiM0MzsxNDQxLDkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwlpZiAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiYjNDM7CQlnb3RvIHNldF9tb2RlOwomIzQzOwogCXJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CkBAIC0xNDE2LDcgJiM0MzsxNDgxLDggQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiAJCX0KIAl9CiAKLQkvKnJtaWkgb3IgcmdtaWkqLwomIzQzO3NldF9tb2RlOgomIzQzOwkvKiBybWlpLCByZ21paSwgc2dtaWkgKi8KIAlzd2l0Y2ggKGJzcF9wcml2LSZndDtwaHlfaWZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSToKIAkJZGV2X2luZm8oZGV2LCAmIzM0O2luaXQgZm9yIFJHTUlJXG4mIzM0Oyk7CkBAIC0xNDQ3LDYgJiM0MzsxNTEzLDExIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoYnNwX3ByaXYtJmd0O29wcy0mZ3Q7c2V0X3RvX3JtaWkpCiAJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fcm1paShic3BfcHJpdik7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWRldl9pbmZvKGRldiwgJiMzNDtpbml0IGZvciBTR01JSVxuJiMzNDspOwomIzQzOwkJaWYgKGJzcF9wcml2LSZndDtvcHMtJmd0O3NldF90b19zZ21paSkKJiM0MzsJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fc2dtaWkoYnNwX3ByaXYpOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2VycihkZXYsICYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXG4mIzM0Oyk7CiAJfQpAQCAtMTQ4Niw2ICYjNDM7MTU1Nyw5IEBAIHN0YXRpYyB2b2lkIHJrX2dldF9pbnRlcmZhY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCAqYnNwX3ByaXYsCiAKIAlpZiAocmstJmd0O3N1cHBvcnRzX3JtaWkpCiAJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSwgaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CWlmIChyay0mZ3Q7c3VwcG9ydHNfc2dtaWkpCiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTsKIH0KIAogc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSwKQEAgLTE2MDIsNiAmIzQzOzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcGxhdF9kYXQtJmd0O3N1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7CiAJcGxhdF9kYXQtJmd0O3Jlc3VtZSA9IHJrX2dtYWNfcmVzdW1lOwogCiYjNDM7CWlmIChwbGF0X2RhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHsKJiM0MzsJCS8qIFNHTUlJIGNsb2NrIGFsd2F5cyBydW5zIGF0IDEyNSBNSHogKi8KJiM0MzsJCXBsYXRfZGF0LSZndDtzZXRfY2xrX3R4X3JhdGUgPSBOVUxMOwomIzQzOwomIzQzOwkJLyogU0dNSUkgcmVxdWlyZXMgYSBQQ1MgKi8KJiM0MzsJCXBsYXRfZGF0LSZndDtkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQlwbGF0X2RhdC0mZ3Q7cGNzX2luaXQgPSBya19wY3NfaW5pdDsKJiM0MzsJCXBsYXRfZGF0LSZndDtwY3NfZXhpdCA9IHJrX3Bjc19leGl0OwomIzQzOwkJcGxhdF9kYXQtJmd0O3NlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzOwomIzQzOwl9CiYjNDM7CiAJcGxhdF9kYXQtJmd0O2JzcF9wcml2ID0gcmtfZ21hY19zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7CiAJaWYgKElTX0VSUihwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYpKQogCQlyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCmluZGV4IDEzNjM0OTY1YmMxOWExLi4wMWRmNDc3NmVkYjNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYwpAQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAKIHN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewotCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCi0JCW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ6bjFfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKaW5kZXggMWQ3ZjBhNTdkMjg4OTcuLjZkNGJjMWZlOGY3NTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jCkBAIC01MzksOCAmIzQzOzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwppbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwpAQCAtNDI2LDM2ICYjNDM7NDI2LDE1IEBAIGludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7Ci0Jc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlOwotCXN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDsKLQlpbnQgYWRkciwgcmV0OwotCi0JZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi0mZ3Q7ZGV2aWNlKTsKLQotCWlmIChwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdCkgewotCQlyZXQgPSBwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdChwcml2KTsKLQl9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7KSkgewotCQlwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKLQkJeHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTsKLQkJZndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7Ci0JCXJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTsKLQl9IGVsc2UgaWYgKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEgJmFtcDsmYW1wOwotCQkgICBwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtwY3NfbWFzaykgewotCQlhZGRyID0gZmZzKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrKSAtIDE7Ci0JCXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtJmd0O21paSwgYWRkcik7Ci0JCXJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTsKLQl9IGVsc2UgewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoIXByaXYtJmd0O3BsYXQtJmd0O3Bjc19pbml0KQogCQlyZXR1cm4gMDsKLQl9CiAKJiM0MzsJcmV0ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQocHJpdik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi0mZ3Q7ZGV2aWNlLCByZXQsICYjMzQ7Tm8geFBDUyBmb3VuZFxuJiMzNDspOwogCi0JaWYgKHhwY3MpCi0JCXhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi0mZ3Q7cGxhdC0mZ3Q7bXVsdF9mYWN0XzEwMG5zKTsKLQotCXByaXYtJmd0O2h3LSZndDt4cGNzID0geHBjczsKLQogCXJldHVybiAwOwogfQogCkBAIC00NjMsMTQgJiM0Mzs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCi0JaWYgKHByaXYtJmd0O3BsYXQtJmd0O3Bjc19leGl0KQotCQlwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdChwcml2KTsKLQotCWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CWlmICghcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQpCiAJCXJldHVybjsKIAotCXhwY3NfZGVzdHJveShwcml2LSZndDtody0mZ3Q7eHBjcyk7Ci0JcHJpdi0mZ3Q7aHctJmd0O3hwY3MgPSBOVUxMOwomIzQzOwlwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdChwcml2KTsKIH0KIAogc3RydWN0IHN0bW1hY19jbGtfcmF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnCmluZGV4IGU0MTdmZDY2ZjY2MGFkLi4zMjg2YmM5M2U3MDI2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWcKQEAgLTEyLDYgJiM0MzsxMiwyOCBAQCBjb25maWcgUENTX1hQQ1MKIAkgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5cwogCSAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLgogCiYjNDM7aWYgUENTX1hQQ1MKJiM0MzsKJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk0KJiM0MzsJdHJpc3RhdGUgJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0JiMzNDsKJiM0MzsJZGVmYXVsdCBQQ1NfWFBDUwomIzQzOwloZWxwCiYjNDM7CSAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnkKJiM0MzsJICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtCiYjNDM7CSAgZGF0YSBmb3Igc2V0dXAuCiYjNDM7CiYjNDM7CSAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS4KJiM0MzsKJiM0Mztjb25maWcgUENTX1hQQ1NfUk9DS0NISVAKJiM0MzsJdHJpc3RhdGUgJiMzNDtSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydCYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIFJvY2tjaGlwIFNvQyB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuCiYjNDM7CiYjNDM7ZW5kaWYgIyBQQ1NfWFBDUwomIzQzOwogY29uZmlnIFBDU19MWU5YCiAJdHJpc3RhdGUKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKaW5kZXggNGY3OTIwNjE4YjkwMDUuLmM4MDliN2Y5NDJhNTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCkBAIC0xLDEwICYjNDM7MSw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiAjIE1ha2VmaWxlIGZvciBMaW51eCBQQ1MgZHJpdmVycwogCi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUykJOj0gcGNzLXhwY3MubyBwY3MteHBjcy1wbGF0Lm8gXAotCQkJCSAgIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm8KLQotb2JqLSQoQ09ORklHX1BDU19YUENTKQkJJiM0Mzs9IHBjc194cGNzLm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1MpICYjNDM7PSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUExBVEZPUk0pICYjNDM7PSBwY3MteHBjcy1wbGF0Lm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICYjNDM7PSBwY3MteHBjcy1yay5vCiBvYmotJChDT05GSUdfUENTX0xZTlgpCQkmIzQzOz0gcGNzLWx5bngubwogb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpCSYjNDM7PSBwY3MtbXRrLWx5bnhpLm8KIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKQkmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lZDk2OWEzOGQ1NDRkNQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jCkBAIC0wLDAgJiM0MzsxLDUyNiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyoKJiM0MzsgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXIKJiM0MzsgKgomIzQzOyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pbgomIzQzOyAqCiYjNDM7ICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnQKJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYXRvbWljLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Nsay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW9wb2xsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mX3BsYXRmb3JtLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fZG9tYWluLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2l6ZXMuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3Bjcy14cGNzLmgmIzM0OwomIzQzOwomIzQzO3N0cnVjdCBkd194cGNzX3JrIHsKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKJiM0MzsJc3RydWN0IG1paV9idXMgKmJ1czsKJiM0MzsJdm9pZCBfX2lvbWVtICpyZWdfYmFzZTsKJiM0MzsJc3RydWN0IHBoeSAqc2VyZGVzX3BoeTsKJiM0MzsJc3RydWN0IGNsayAqY3NyX2NsazsKJiM0MzsJc3RydWN0IGNsayAqZWVlX2NsazsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJcmV0dXJuIEZJRUxEX1BSRVAoMHg3MDAwMCwgZGV2KSB8IEZJRUxEX1BSRVAoMHhmZmZmLCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJcHRyZGlmZl90IGNzcjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7CiYjNDM7CiYjNDM7CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHJlYWRsKHB4cGNzLSZndDtyZWdfYmFzZSAmIzQzOyAoY3NyICZsdDsmbHQ7IDIpKSAmYW1wOyAweGZmZmY7CiYjNDM7CiYjNDM7CXBtX3J1bnRpbWVfcHV0KCZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2Rldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJcHRyZGlmZl90IGNzcjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7CiYjNDM7CiYjNDM7CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXdyaXRlbCh2YWwsIHB4cGNzLSZndDtyZWdfYmFzZSAmIzQzOyAoY3NyICZsdDsmbHQ7IDIpKTsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9wdXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTEJMgomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTIJMwomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTMJNAomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX1BNQVBNRAk2CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJCTcKJiM0MzsKJiM0MztzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcikKJiM0Mzt7CiYjNDM7CXJldHVybiAhKGFkZHIgJmx0OyAwIHx8IGFkZHIgJmd0OyAzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGRldikgewomIzQzOwljYXNlIE1ESU9fTU1EX1BNQVBNRDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwomIzQzOwljYXNlIE1ESU9fTU1EX1ZFTkQyOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOWElPOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoYWRkcikgewomIzQzOwljYXNlIDA6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJY2FzZSAxOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxOwomIzQzOwljYXNlIDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7CiYjNDM7CWNhc2UgMzoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoZGV2KSB7CiYjNDM7CWNhc2UgTURJT19NTURfUE1BUE1EOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7CiYjNDM7CWNhc2UgTURJT19NTURfVkVORDI6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogV3JpdGFibGUgb25seSBvbiBNSUkgKi8KJiM0MzsJc3dpdGNoIChyZWcpIHsKJiM0MzsJY2FzZSBEV19WUl9NSUlfQU5fQ1RSTDoKJiM0MzsJY2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDA6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDE6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3dpdGNoIChhZGRyKSB7CiYjNDM7CWNhc2UgMDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJOwomIzQzOwljYXNlIDE6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7CiYjNDM7CWNhc2UgMjoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMjsKJiM0MzsJY2FzZSAzOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwlpbnQgZGV2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBNRElPX01NRF9WRU5EMiwgcmVnKTsKJiM0MzsJaWYgKGRldiAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gMHhmZmZmOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwlpbnQgZGV2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAweGZmZmY7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3JlYWRfcmVnKHB4cGNzLCBkZXYsIHJlZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcsIHUxNiB2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtJmd0O3ByaXY7CiYjNDM7CiYjNDM7CWlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZGV2ID0geHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgZHdfeHBjc19yayAqeHBjc19ya19jcmVhdGVfZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzOwomIzQzOwomIzQzOwlweHBjcyA9IGRldm1fa3phbGxvYygmYW1wO3BkZXYtJmd0O2Rldiwgc2l6ZW9mKCpweHBjcyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXB4cGNzKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtwZGV2ID0gcGRldjsKJiM0MzsKJiM0MzsJZGV2X3NldF9kcnZkYXRhKCZhbXA7cGRldi0mZ3Q7ZGV2LCBweHBjcyk7CiYjNDM7CiYjNDM7CXJldHVybiBweHBjczsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtzZXJkZXNfcGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgJiMzNDtzZXJkZXMmIzM0Oyk7CiYjNDM7CWlmIChJU19FUlIocHhwY3MtJmd0O3NlcmRlc19waHkpKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLSZndDtzZXJkZXNfcGh5KSwKJiM0MzsJCQkJCSYjMzQ7RmFpbGVkIHRvIGdldCBTZXJEZXMgUEhZXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsKJiM0MzsJcGh5X3Bvd2VyX29mZihweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CXBoeV9leGl0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsKJiM0MzsJZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24oc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBwaHlfaW5pdChweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBpbml0IFNlckRlcyBQSFlcbiYjMzQ7KTsKJiM0MzsJCWdvdG8gcG1fZG9tYWluOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9wb3dlcl9vbihweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXG4mIzM0Oyk7CiYjNDM7CQlnb3RvIHNlcmRlc19waHk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzOwomIzQzO3NlcmRlc19waHk6CiYjNDM7CXBoeV9leGl0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MztwbV9kb21haW46CiYjNDM7CWRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLSZndDtwZGV2OwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3BkZXYtJmd0O2RldjsKJiM0MzsJc3RydWN0IHJlc291cmNlICpyZXM7CiYjNDM7CiYjNDM7CXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CiYjNDM7CWlmICghcmVzKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtObyByZWctc3BhY2UgZm91bmRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChyZXNvdXJjZV9zaXplKHJlcykgJmx0OyBTWl8yTSkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7SW52YWxpZCByZWctc3BhY2Ugc2l6ZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcHhwY3MtJmd0O3JlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7cmVnX2Jhc2UpKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIFBUUl9FUlIocHhwY3MtJmd0O3JlZ19iYXNlKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGF0YTsKJiM0MzsKJiM0MzsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLSZndDtlZWVfY2xrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfY2xrKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcHhwY3MtJmd0O2Nzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAmIzM0O2NzciYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7Y3NyX2NsaykpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtJmd0O2Nzcl9jbGspLAomIzQzOwkJCQkJICYjMzQ7RmFpbGVkIHRvIGdldCBDU1IgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CiYjNDM7CXJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgJiMzNDtlZWUmIzM0Oyk7CiYjNDM7CWlmIChJU19FUlIocHhwY3MtJmd0O2VlZV9jbGspKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLSZndDtlZWVfY2xrKSwKJiM0MzsJCQkJCSAmIzM0O0ZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy0mZ3Q7ZWVlX2Nsayk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcbiYjMzQ7LCByZXQpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJc3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpOwomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApOwomIzQzOwlpZiAoIWJ1cykKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlidXMtJmd0O25hbWUgPSAmIzM0O1JvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjMmIzM0OzsKJiM0MzsJYnVzLSZndDtyZWFkID0geHBjc19ya19yZWFkX2MyMjsKJiM0MzsJYnVzLSZndDt3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyOwomIzQzOwlidXMtJmd0O3JlYWRfYzQ1ID0geHBjc19ya19yZWFkX2M0NTsKJiM0MzsJYnVzLSZndDt3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTsKJiM0MzsJYnVzLSZndDtwaHlfbWFzayA9IH4wOwomIzQzOwlidXMtJmd0O3BhcmVudCA9IGRldjsKJiM0MzsJYnVzLSZndDtwcml2ID0gcHhwY3M7CiYjNDM7CiYjNDM7CXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwKJiM0MzsJCSAmIzM0O3JvY2tjaGlwX2R3eHBjcy0leCYjMzQ7LCBhdG9taWNfaW5jX3JldHVybigmYW1wO2lkKSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0CiYjNDM7CSAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnMKJiM0MzsJICogYWNjZXNzLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlweHBjcy0mZ3Q7YnVzID0gYnVzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUihweHBjcyk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBYUENTIG1heSBiZSBhdHRhY2hlZCB0byBhIHBvd2VyIGRvbWFpbiAoZS5nLiBQRF9QSVBFKS4gVGhlIGRvbWFpbgomIzQzOwkgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGwKJiM0MzsJICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLgomIzQzOwkgKgomIzQzOwkgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsCiYjNDM7CSAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX2luaXRfcmVzKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wOwomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwl1MzIgcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVnJiMzNDssICZhbXA7cG9ydCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiYjNDM7CiYjNDM7CS8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovCiYjNDM7CXBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApOwomIzQzOwlpZiAoIXBjc19ucCkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHBjc19ucCk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ucCk7CiYjNDM7CWlmICghcGRldikKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwomIzQzOwlweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwomIzQzOwlpZiAoIXB4cGNzIHx8ICFweHBjcy0mZ3Q7YnVzKSB7CiYjNDM7CQlwdXRfZGV2aWNlKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLSZndDtidXMsIChpbnQpcG9ydCk7CiYjNDM7CWlmIChJU19FUlIoeHBjcykpIHsKJiM0MzsJCXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwkJcmV0dXJuIHhwY3M7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2aWNlX2xpbmtfYWRkKGRldiwgJmFtcDtwZGV2LSZndDtkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUik7CiYjNDM7CXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4geHBjczsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CWNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy0mZ3Q7Y3NyX2Nsayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtJmd0O2Nzcl9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgeHBjc19ya19wbV9vcHMgPSB7CiYjNDM7CVNFVF9SVU5USU1FX1BNX09QUyh4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZCwKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLAomIzQzOwkJCSAgIE5VTEwpCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjcyYjMzQ7IH0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfSwKJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHsKJiM0MzsJLnByb2JlID0geHBjc19ya19wcm9iZSwKJiM0MzsJLmRyaXZlciA9IHsKJiM0MzsJCS5uYW1lID0gJiMzNDtya194cGNzLWR3eHBjcyYjMzQ7LAomIzQzOwkJLnBtID0gJmFtcDt4cGNzX3JrX3BtX29wcywKJiM0MzsJCS5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLAomIzQzOwl9LAomIzQzO307CiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKaW5kZXggZTY5ZmEyZjBhMGU4ZDguLmNmMzcwYmEyNDdjYWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwpAQCAtODE2LDYgJiM0Mzs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAlpZiAocmV0ICZsdDsgMCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwkvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqLwomIzQzOwlyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJaWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkKIAkJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsCiAJCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpOwpAQCAtODg0LDcgJiM0Mzs4ODksNyBAQCBzdGF0aWMgaW50IHhwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleChzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAogCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpIHsKIAkJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsCi0JCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpOwomIzQzOwkJCQkgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTsKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTEwNTgsNiAmIzQzOzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAogCS8qIFJlc2V0IGxpbmtfc3RhdGUgKi8KIAlzdGF0ZS0mZ3Q7bGluayA9IGZhbHNlOwomIzQzOwlzdGF0ZS0mZ3Q7YW5fY29tcGxldGUgPSBmYWxzZTsKIAlzdGF0ZS0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjsKIAlzdGF0ZS0mZ3Q7cGF1c2UgPSAwOwpAQCAtMTA2OSw2ICYjNDM7MTA3NSw4IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLAogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gcmV0OwogCiYjNDM7CXN0YXRlLSZndDthbl9jb21wbGV0ZSA9IHJldCAmYW1wOyBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFI7CiYjNDM7CiAJaWYgKHJldCAmYW1wOyBEV19WUl9NSUlfQzM3X0FOU0dNX1NQX0xOS1NUUykgewogCQlpbnQgc3BlZWRfdmFsdWU7CiAKQEAgLTEwODYsNyAmIzQzOzEwOTQsMjQgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJCQlzdGF0ZS0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7CiAJCWVsc2UKIAkJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfSEFMRjsKLQl9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHsKJiM0MzsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi8KJiM0MzsJaWYgKHN0YXRlLSZndDthbl9jb21wbGV0ZSkKJiM0MzsJCXhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7CiYjNDM7CiYjNDM7CWlmICh4cGNzLSZndDtpbmZvLnBtYSAhPSBXWF9UWEdCRV9YUENTX1BNQV8xMEdfSUQpIHsKJiM0MzsJCS8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqLwomIzQzOwkJaWYgKHN0YXRlLSZndDthbl9jb21wbGV0ZSkKJiM0MzsJCQl4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULAomIzQzOwkJCQkgICAgQk1DUl9BTlJFU1RBUlQpOwomIzQzOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHsKIAkJaW50IHNwZWVkLCBkdXBsZXg7CiAKIAkJc3RhdGUtJmd0O2xpbmsgPSB0cnVlOwpAQCAtMTExMiw3ICYjNDM7MTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLAogCQllbHNlIGlmIChkdXBsZXggJmFtcDsgQURWRVJUSVNFXzEwMDBYSEFMRikKIAkJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfSEFMRjsKIAotCQl4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApOwomIzQzOwkJcmV0dXJuIDA7CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jCmluZGV4IDJiMGYxNTJmNTQ3MDkxLi5mZjI5MGJjMTg1ODlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMKQEAgLTE4Niw2ICYjNDM7MTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV94cGNzX3BoeV9yZWFkeTsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDsKJiM0MzsJc3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcwX3BvcnRfZW47CiAJc3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuOwogfTsKQEAgLTIxMiw2ICYjNDM7MjEzLDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiB7CiAJYm9vbCBlbmFibGVfc3NjOwogCWJvb2wgZXh0X3JlZmNsazsKIAlzdHJ1Y3QgY2xrICpyZWZjbGs7CiYjNDM7CXUzMiBzZ21paV9tYWNfc2VsOwogfTsKIAogc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsCkBAIC0zNzUsNiAmIzQzOzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5CiAKIAlwcml2LSZndDtleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCAmIzM0O3JvY2tjaGlwLGV4dC1yZWZjbGsmIzM0Oyk7CiAKJiM0MzsJcHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCA9IDA7CiYjNDM7CWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICYjMzQ7cm9ja2NoaXAsc2dtaWktbWFjLXNlbCYjMzQ7LCAmYW1wO3ByaXYtJmd0O3NnbWlpX21hY19zZWwpOwomIzQzOwogCXByaXYtJmd0O3BoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsICYjMzQ7cGh5JiMzNDspOwogCS8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi8KIAlpZiAoUFRSX0VSUihwcml2LSZndDtwaHlfcnN0KSA9PSAtRU5PRU5UKQpAQCAtODczLDYgJiM0Mzs4NzgsOCBAQCBzdGF0aWMgaW50IHJrMzU2OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQogCQlicmVhazsKIAogCWNhc2UgUEhZX1RZUEVfU0dNSUk6CiYjNDM7CQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BpcGVfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV9zZ21paV9tYWNfc2VsLAomIzQzOwkJCQkJcHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCAmZ3Q7IDApOwogCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BpcGVfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGh5X2dyZiwgJmFtcDtjZmctJmd0O3BpcGVfcGh5bW9kZV9zZWwsIHRydWUpOwogCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BoeV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3NlbF9xc2dtaWksIHRydWUpOwpAQCAtOTg0LDYgJiM0Mzs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7CiAJLmNvbjNfZm9yX3NhdGEJCT0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSwKIAkvKiBwaXBlLWdyZiAqLwogCS5waXBlX2NvbjBfZm9yX3NhdGEJPSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LAomIzQzOwkucGlwZV9zZ21paV9tYWNfc2VsCT0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSwKIAkucGlwZV94cGNzX3BoeV9yZWFkeQk9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sCiAJLnUzb3RnMF9wb3J0X2VuCQk9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSwKIAkudTNvdGcxX3BvcnRfZW4JCT0geyAweDAxNDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApAQCAtMCwwICYjNDM7MSwxMSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCiYjNDM7I2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0gKJiM0MzsjZGVmaW5lIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEFuYWx5c2lzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjaW5nIHN1cHBvcnQgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1MgKFhQQ1MpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcywgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCkZpcnN0bHksIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBkcml2ZXIsIGBwY3MteHBjcy1yay5jYCwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZXNlIGFyZSBhIHBhaW4gaW4gdGhlIG5lY2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSB0aGV5IHVzdWFsbHkgcmVseSBoZWF2aWx5IG9uIHRoZSBEZXZpY2UgVHJlZS4gVW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXprYWxsZXItc3BlY2lmaWMgcHNldWRvLWRldmljZSwgb3IgdGhlIGRldmljZSB0cmVlIGlzIGFscmVhZHkgYXZhaWxhYmxlLCB3aGljaCBpcyB1bmxpa2VseSBpbiBhIGdlbmVyaWMgZW52aXJvbm1lbnQsIGl0JiMzOTtzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCB0aGlzIGRyaXZlci4gU3l6a2FsbGVyICpjb3VsZCogdHJ5IHRvIGluamVjdCB0aGUgcGxhdGZvcm0gZGV2aWNlIHdpdGggYHN5el9kZXZfaW5pdGAgb3IgbW9kaWZ5IHRoZSBEVCBpZiBzdXBwb3J0ZWQsIGJ1dCB0eXBpY2FsbHksIHN5emthbGxlciBwcmVmZXJzIHNpbXBsZXIsIG1vcmUgZGlyZWN0IGFwcHJvYWNoZXMgZm9yIG5ldHdvcmsgZHJpdmVycyBsaWtlIHZpcnR1YWwgaW50ZXJmYWNlcy4gSW4gdGhpcyBjYXNlLCBgcGNzLXhwY3MtcmsuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggYSBjb21wYXRpYmxlIHN0cmluZywgYW5kIGl0cyBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbiB0aGF0IGluY2x1ZGVzIGdldHRpbmcgYSAmIzM0O3NlcmRlcyYjMzQ7IHBoeSBhbmQgcmVzb3VyY2VzLiBXaXRob3V0IHRoZSByaWdodCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IGZhaWwuIFRoZSBkZXZpY2UgdHJlZSB3aWxsIG5lZWQgdG8gZXhpc3QgYW5kIGhhdmUgdGhlIGNvcnJlY3QgZW50cmllcyBmb3IgdGhlIHBsYXRmb3JtIGRyaXZlciB0byBzdWNjZWVkLCB3aGljaCBpcyB1bmxpa2VseSBpbiBtb3N0IHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4KClNlY29uZGx5LCBhbmQgbW9yZSBpbnRlcmVzdGluZ2x5LCB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgYHN0bW1hY2AgZHJpdmVyLiBUaGlzIGlzIGEgZ2VuZXJpYyBkcml2ZXIsIHNvIGl0IGNvdWxkIGhhdmUgZ29vZCBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoZXJlIGlzIGEgcmVmYWN0b3JpbmcgaGFwcGVuaW5nIHdoZXJlIGBzdG1tYWNfcGNzX3NldHVwYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIHRoaXMgYWZmZWN0cyBob3cgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFRoZSBwYXRjaCBkZWxlZ2F0ZXMgdGhlIGluaXRpYWxpemF0aW9uIHRvIGBwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdGAuCgpUaGUgYHN0bW1hY2AgY2hhbmdlcyBsZWFkIHRvIHRoZSBgZHdtYWMtaW50ZWwuY2AgZmlsZSBnZXR0aW5nIG1vZGlmaWVkLiBUaGlzIGZpbGUgaXMgZm9yIEludGVsIFBDSSBkZXZpY2VzLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcgYmVjYXVzZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzISBJZiB0aGUgSW50ZWwgZHJpdmVyIGlzIGVuYWJsZWQsIGFuZCBzeXprYWxsZXIgY2FuIGluamVjdCBhIHN1aXRhYmxlIEludGVsIFBDSSBkZXZpY2UsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gV2UmIzM5O2xsIGJlIGFibGUgdG8gcHJvYmUgYGludGVsX21nYmVfcGNzX2luaXRgIGFuZCBmcm9tIHRoZXJlIHRoZSBgc3RtbWFjX3Bjc19zZXR1cGAgZnVuY3Rpb25zLiBUaGlzIHdvdWxkIG1lYW4gcmVhY2hpbmcgYHhwY3NfY3JlYXRlX21kaW9kZXZgLiBUaGUgUENJIGRldmljZSBlbXVsYXRpb24vaW5qZWN0aW9uIGlzIGltcG9ydGFudCBoZXJlLgoKVGhlcmUmIzM5O3Mgc29tZSBmdW5jdGlvbmFsIGxvZ2ljIGFzIHdlbGwuIFRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBwY3MteHBjcy5jYCwgc3BlY2lmaWNhbGx5IGZ1bmN0aW9ucyBsaWtlIGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhgLCBhbmQgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAuIFRoZXNlIGFyZSBnZW5lcmljIFBDUyBkcml2ZXIgZnVuY3Rpb25zIGFuZCwgc2luY2UgSW50ZWwgbUdCRSB1c2VzIFNHTUlJIG9yIDEwMDBCQVNFWCwgdGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBJbnRlbCBtR0JFIGRyaXZlciwgZXNwZWNpYWxseSBpZiB0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCBTR01JSSBvciAxMDAwQkFTRVggbW9kZXMgYXJlIGFjdGl2ZS4gVGhlc2UgbW9kaWZpY2F0aW9ucyBpbiBgcGNzLXhwY3MuY2Agc2hvdWxkIGJlIHRoZSBtYWluIGFyZWEgb2YgZm9jdXMuIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgIGlzIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgcGh5bGluaywgc28gdGhleSB3aWxsIGJlIGV4ZXJjaXNlZCBkdXJpbmcgZGV2aWNlIG9wZXJhdGlvbi4KClNvLCB0aGUga2V5IGhlcmUgaXMgUENJIGZ1enppbmcsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIEludGVsIG1HQkUgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApLiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBvciBlbXVsYXRlIGFuIEludGVsIFBDSSBkZXZpY2UsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIHJpZ2h0LCB3ZSBjYW4gZXhlcmNpc2UgdGhvc2UgZ2VuZXJpYyBgcGNzLXhwY3MuY2AgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gYmUgc3VyZSB0aGUgcmlnaHQgY29uZmlncyBhcmUgc2V0LCBidXQgaXQgbG9va3MgbGlrZSB3ZSB3aWxsIG5lZWQ6CgoqICAgYENPTkZJR19TVE1NQUNfRVRIYAoqICAgYENPTkZJR19EV01BQ19JTlRFTGAKKiAgIGBDT05GSUdfUENTX1hQQ1NgCiogICBgQ09ORklHX1BDSWAKCkl0IGxvb2tzIGxpa2UgdGhlIGBEV01BQ19JTlRFTGAgY29uZmlnIHNlbGVjdHMgYFBDU19YUENTYC4gTGV0JiMzOTtzIGdldCB0byB3b3JrIHdpdGggdGVzdGluZyB0aGVzZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9NzIxPXN0YXRpYyB2b2lkIHhwY3NfcHJlX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy03NDktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzo3NTA6c3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTc1MS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz05MTY9c3RhdGljIGludCB4cGNzX2RvX2NvbmZpZyhzdHJ1Y3QgZHdfeHBjcyAqeHBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDctXHRjYXNlIERXX0FOX0MzN19TR01JSTpcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjk0ODpcdFx0cmV0ID0geHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoeHBjcywgbmVnX21vZGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtOTQ5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODkxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgc28gdGhlIGJyZWFkY3J1bWIgdHJhaWwgc3RhcnRzIHdpdGggYHhwY3NfZG9fY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICp3aXRoaW4qIHRoYXQgY2FsbC4KCk15IG5leHQgc3RvcCBpcyBjbGVhcmx5IGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgLiBUaGlzIGxvb2tzIGxpa2Ugd2hlcmUgd2UmIzM5O3JlIGRpZ2dpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3RhdGUgcmVsYXRlZCB0byBTR01JSSDigJMgYSBwYXJ0aWN1bGFyIHR5cGUgb2Ygc2lnbmFsaW5nIGludGVyZmFjZSwgbW9zdCBsaWtlbHksIGJhc2VkIG9uIHRoZSBuYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgcHVsbGluZyB0aGF0IHN0YXRlLCBmcm9tIHdoZXJlLCBhbmQgaG93IGl0IGluZm9ybXMgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGl0IHB1bGxpbmcgZnJvbSByZWdpc3RlcnMsIG1lbW9yeSwgYSBjb25maWcgZmlsZT8gSXMgaXQgY2hlY2tpbmcgZm9yIGVycm9ycz8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZXMgYW5kIGFueSBzdGF0ZSB2YXJpYWJsZXMgdXNlZCBhcyBhIHJlc3VsdCBvZiB0aGF0IGNhbGwgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwY3NfZ2V0X3N0YXRlX2MzN19zZ21paSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz05ODY9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jNzMoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTA1OC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjEwNTk6c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMDYwLVx0XHRcdFx0ICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTEyMDQ9c3RhdGljIHZvaWQgeHBjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMjI1LVx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI2Olx0XHRyZXQgPSB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoeHBjcywgc3RhdGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTIyNy1cdFx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjgtXHRcdFx0ZGV2X2VycihcdTAwMjZ4cGNzLVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDslcyByZXR1cm5lZCAlcGVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI5Olx0XHRcdFx0XCYjMzQ7eHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpXCYjMzQ7LCBFUlJfUFRSKHJldCkpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTIzMC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NjYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUENTIFN0YXRlIFJldHJpZXZhbCoqCgpSaWdodCwgc28gdGhpcyBpcyBjb21pbmcgZnJvbSBhIGNhbGwgdG8gYHhwY3NfZ2V0X3N0YXRlYC4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHN0YXRlIGNoZWNrLiAqVGhhdCogc3BlY2lmaWMgZnVuY3Rpb24gY2FsbCBpcyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGdldCBjYWxsZWQgZnJvbSBhbmQgd2hhdCBpcyBoYXBwZW5pbmcgYXJvdW5kIGl0PyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hhdCBpcyBpbml0aWFsaXppbmcgdGhlIFBDUyB0byBiZWdpbiB3aXRoLgoKSSBzaG91bGQgY2hlY2sgdGhlIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCBmdW5jdGlvbi4gSXMgaXQgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGluaXRpYWwgUENTIHN0YXRlIG9yLCBpcyBpdCBjYWxsZWQgYmVmb3JlIGB4cGNzX2dldF9zdGF0ZWA/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByYWNlIGNvbmRpdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gKnRoZXNlKiB0d28gZnVuY3Rpb25zIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU2NT1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTc1OnN0YXRpYyBpbnQgaW50ZWxfbWdiZV9wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTk9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzM4LVx0XHRwbGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzM5Olx0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzQwLVx0XHRwbGF0LVx1MDAzZXBjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzEyNQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQQ1MgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgbGVhZHMgbWUgdG8gYHBsYXQtJmd0O3Bjc19pbml0YCwgYW5kIEkgY2FuIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3Bjc19zZXR1cGAuIFRoYXQgY29uZmlybXMgdGhlIGFzc2lnbm1lbnQgYW5kIHRoZSBjYWxsIHN0YWNrOyBzbyBmYXIsIHNvIGdvb2QuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byBgc3RtbWFjX3Bjc19zZXR1cGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCwgc2VlICpob3cqIGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIGluLiBHb3R0YSBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBzZXR1cCBpdCYjMzk7cyBwZXJmb3JtaW5nLCB3aGF0IHBhcmFtZXRlcnMgbWF0dGVyLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjdXN0b21pemF0aW9uIHBvaW50cyBtaWdodCBiZS4gS25vd2luZyAqaG93KiBpdCYjMzk7cyBhbGwgcHV0IHRvZ2V0aGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgaW1wbGljYXRpb25zIG9mIHRoZSBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Bjc19zZXR1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDE9dm9pZCBzdG1tYWNfbWRpb191bmxvY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwMjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDMtdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3OTc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA0NjpcdHJldCA9IHN0bW1hY19wY3Nfc2V0dXAobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNDctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MzgxPWludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNDI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo0MjY6aW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogODIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0cyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgSW50ZWwgbUdCRSBEZXZpY2UqKgoKT2theSwgc28gdGhpcyBpcyBhbGwgdHJpZ2dlcmVkIGZyb20gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIFRoZSByZWxldmFudCBjb2RlIGNoYW5nZXMgaW4gYHBjcy14cGNzLmNgLCBgc3RtbWFjX21kaW8uY2AsIGFuZCBgZHdtYWMtaW50ZWwuY2AgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcgb2YgdGhlIEludGVsIG1HQkUgZGV2aWNlLiBUaGUgUm9ja2NoaXAtc3BlY2lmaWMgY2hhbmdlcyBpbiBgcGNzLXhwY3MtcmsuY2AgYW5kIGBkd21hYy1yay5jYCBhcmUgbGVzcyBvZiBhIHByaW9yaXR5IGZvciBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCwgYnV0IGl0IGRvZXNuJiMzOTt0IGh1cnQgdG8ga2VlcCBhbiBleWUgb24gdGhlbS4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gUmlnaHQsIGBzdG1tYWNfcGNzX3NldHVwYCBhbmQgYGludGVsX21nYmVfcGNzX2luaXRgIGFyZSBib3RoIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlLiBCdXQgYHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpYCBhbmQgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAgYXJlIHRyaWdnZXJlZCBieSBwaHlsaW5rLCB3aGljaCBpcyB0aGVuIHRyaWdnZXJlZCBieSBuZXRsaW5rLCBsaWtlIGFuIGBpcCBsaW5rIHNldCB1cGAgY29tbWFuZC4gVGhvc2UgcGh5bGluayBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgZ29vZCB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXkmIzM5O3JlIHVzZXItc3BhY2UgY29udHJvbGxhYmxlLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZDogYERXTUFDX0lOVEVMYCwgYFNUTU1BQ19FVEhgLCBgUENTX1hQQ1NgLCBhbmQgYFBDSWAuIEhhbmcgb24uLi4gYFBDU19YUENTYCBpcyBhIHRyaXN0YXRlLCBhbmQgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYERXTUFDX0lOVEVMYC4gT2theSwgcmVhZGluZyB0aGUgcGF0Y2guLi4gYFBDU19YUENTX1BMQVRGT1JNYCBpcyB0aGUgZ2VuZXJpYyBkcml2ZXIuIEFoLCBnb3QgaXQuIGBwY3MteHBjcy5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfUENTX1hQQ1NgIGlzIGVuYWJsZWQuIE9rYXksIGxvb2tpbmcgYXQgdGhlIG1ha2VmaWxlLCBzbyBgcGNzLXhwY3MuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BDU19YUENTYCBpcyBlbmFibGVkLiBgQ09ORklHX0RXTUFDX0lOVEVMYCBzZWxlY3RzIGBQQ1NfWFBDU2AuIFNvLCBpdCBsb29rcyBsaWtlIGBEV01BQ19JTlRFTGAgYW5kIGBTVE1NQUNfRVRIYCBhcmUgdGhlIGNvcmUgcmVxdWlyZW1lbnRzLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgRFdNQUNfUk9DS0NISVBgIHNlbGVjdHMgYFBDU19YUENTX1JPQ0tDSElQYC4gV2UgbWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCB0b28sIGp1c3QgaW4gY2FzZSwgYnV0IHRoZXkmIzM5O3JlIGRlcGVuZGVudCBvbiBgQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1RgLiBTaW5jZSB3ZSB3YW50IHRvIGZvY3VzIG9uIHRoZSBnZW5lcmljIHBhcnRzLCBgRFdNQUNfSU5URUxgIGlzIHRoZSBtb3N0IGltcG9ydGFudC4KCkFscmlnaHQsIGZpbmFsIHZlcmlmaWNhdGlvbjogV2UgbmVlZCBgU1RNTUFDX0VUSGAsIGBEV01BQ19JTlRFTGAsIGFuZCBgUENTX1hQQ1NgLiBJJiMzOTttIHJlYXNvbmFibHkgY29uZmlkZW50IGBEV01BQ19JTlRFTGAgaXMgc3VmZmljaWVudCwgYnV0IGxldCYjMzk7cyB0ZXN0IGl0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERXTUFDX0lOVEVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIzPWNvbmZpZyBEV01BQ19JTVg4XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpjb25maWcgRFdNQUNfSU5URUxfUExBVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzYtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzQ9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc5OmNvbmZpZyBEV01BQ19JTlRFTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBHTUFDIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1NTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqUXVpY2sgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCByaWdodCwgc28gYERXTUFDX0lOVEVMYC4uLnRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGNvbm5lY3Rpb24gb3ZlciB0byBgZHdtYWMtaW50ZWwuY2AuIE1ha2VzIHNlbnNlLCBhbGlnbnMgd2l0aCB0aGUgdXN1YWwgSW50ZWwtc3BlY2lmaWMgZGVzY3JpcHRvci4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCBuZWVkIHRvIGFsc28gY29uZmlybSB0aGUgc3RhdGUgb2YgYFBDU19YUENTYC4gR290IHRvIGNyb3NzLXJlZmVyZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9uIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENTX1hQQ1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL0tjb25maWc9Nj1tZW51IFwmIzM0O1BDUyBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjg6Y29uZmlnIFBDU19YUENTXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7U3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MTU9aWYgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTc6Y29uZmlnIFBDU19YUENTX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0yNi1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI3OmNvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMjgtXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBhbmQgdGhlIGxhYmVsIGBQQ1NfWFBDU2AganVzdCBjbGlja2VkLiBJIGtub3cgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBzeXN0ZW0gc2V0dXAsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoYXQgY29udGV4dC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIHVzZWQsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBEV01BQ19ST0NLQ0hJUGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3RzIHdpdGggdGhlIHNvZnR3YXJlLCBhbmQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhpcyBkZXZpY2Ugb3BlcmF0ZXMuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gdHJhY2UgaG93IHRoaXMgY29uZmlndXJhdGlvbiBpcyBiZWluZyBhcHBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfUk9DS0NISVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY4OmNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjY3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYWRkaW5nIFJvY2tjaGlwIFJLMzU2OCBYUENTIHN1cHBvcnQsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UgY2FuIGluY2x1ZGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCBpbiB0aGUgY29uZmlncywgYnV0IHRoZXkgbWlnaHQgbm90IGJlIHJlYWNoYWJsZS4gSW5jbHVkaW5nIHRoZW0gd29uJiMzOTt0IGh1cnQsIHNvIHdoeSBub3QuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIFJvY2tjaGlwLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgYW5kIEkgbmVlZCB0byBhc3Nlc3MgaXRzIHJlYWNoYWJpbGl0eSBpbiBhIGdlbmVyaWMgZW52aXJvbm1lbnQuIFdoaWxlIHRoZSBwbGF0Zm9ybSBkcml2ZXIgaXRzZWxmLCBhbmQgdGhlIGRpcmVjdCBgcmtfcGNzX2luaXRgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc2VlbSBoYXJkIHRvIHRyaWdnZXIgd2l0aG91dCBhIHNwZWNpZmljIGRldmljZSB0cmVlLCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGZvciBQQ1MgaW5pdGlhbGl6YXRpb24sIGFuZCBpbXBvcnRhbnRseSwgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoYGR3bWFjLWludGVsLmNgKSB1c2VzIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdyBub3cuIFRoaXMgaXMga2V5LiBUaGUgZ2VuZXJpYyBgcGNzLXhwY3NgIGRyaXZlciYjMzk7cyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzIGFyZSBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIG1lYW5zIHdlIGhhdmUgYSBjb3VwbGUgb2YgbW9yZSBnZW5lcmljIGNvZGUgcGF0aHMgdGhhdCBjb3VsZCBiZSBoaXQuCgpUaGVyZWZvcmUsIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBhbmQgY2hhbmdlcyB0byB0aGUgSW50ZWwgUENJIGRyaXZlciwgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbi4gU28sIHRoaXMgcGF0Y2ggKmlzKiB3b3J0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCB1bmRlcndlbnQgY29kZSBjaGFuZ2VzLiBJJiMzOTtsbCBpbmNsdWRlOiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBhbHNvIGFkZGVkIGBya19wY3NfaW5pdGAsIGB4cGNzX3JrX3Byb2JlYCBhbmQgYHhwY3NfcmtfY3JlYXRlYCB0byB0aGUgbGlzdC4gVGhleSBtYXkgYmUgcmVhY2hhYmxlIGFzIHdlbGwuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgc3RtbWFjX3Bjc19zZXR1cGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIG5hbWUuCgpJIGRvdWJsZS1jaGVja2VkIHRoYXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIHN1aXRhYmxlIGFzIGZvY3VzIHN5bWJvbHMuIFRoZXkgbG9vayBmaW5lLiBJIHRoZW4gZGlkIGEgZGlmZiBjaGVjayBvbiBgcGNzLXhwY3MuY2AgdG8gY29uZmlybSB0aGUgZnVuY3Rpb25zIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlIHRoZSBvbmVzIGFjdHVhbGx5IGNoYW5nZWQgYnkgdGhpcyBwYXRjaC4KCk15IGluaXRpYWwgY29uZmlnIHNldHVwIHNlZW1zIHNvdW5kLiBJJiMzOTtsbCB1c2UgYFNUTU1BQ19FVEhgLCBgRFdNQUNfSU5URUxgLCBgUENTX1hQQ1NgLCBgUENTX1hQQ1NfUk9DS0NISVBgLCBhbmQgYERXTUFDX1JPQ0tDSElQYCB0byB0ZXN0LiBPaCwgYW5kIEkganVzdCBub3RpY2VkIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgc28gSSYjMzk7bGwgaW5jbHVkZSBgUEhZX1JPQ0tDSElQX05BTkVOR19DT01CUEhZYCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJQSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipGaW5kaW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyByZWxhdGVkIHRvIGEgUm9ja2NoaXAgc3lzdGVtLW9uLWEtY2hpcCAoU29DKSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIGEgY29tYmluZWQgUEhZIChwaHlzaWNhbCBsYXllcikgbGlrZSBhIFVTQiBvciBQQ0llIFBIWS4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIGFuZCBwcm9iYWJseSBzb21lIGRldmljZSB0cmVlIGJpbmRpbmdzLCBhbmQgdGhlbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBkcml2ZXIuCgpGaXJzdCwgSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuIEEgcXVpY2sgc2VhcmNoIGZvciB0aGF0IGZpbGVuYW1lIHNob3VsZCBwb2ludCBtZSB0byB0aGUgY29ycmVjdCBkaXJlY3Rvcnkgc3RydWN0dXJlLiBJJiMzOTtsbCB0aGVuIGV4YW1pbmUgdGhlIGZpbGUgY29udGVudHMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGNvbWJpbmF0aW9uIG9mIGRldmljZS1zcGVjaWZpYyByZWdpc3RlciBkZWZpbml0aW9ucywgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMsIHBvc3NpYmx5IHVzaW5nIGEgY29tbW9uIFBIWSBmcmFtZXdvcmsuIFRoZSBjb25maWd1cmF0aW9uIHNob3VsZCBiZSBwcmVzZW50IGVpdGhlciBkaXJlY3RseSB3aXRoaW4gdGhhdCBkcml2ZXIgZmlsZSBvciwgbW9yZSBsaWtlbHksIG1hbmFnZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBiaW5kaW5ncy4KCklmIGl0JiMzOTtzIGRldmljZSB0cmVlIGJhc2VkLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb3JyZXNwb25kaW5nIERUIChEZXZpY2UgVHJlZSkgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiwgdXN1YWxseSBmb3VuZCBpbiBhIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYCBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBkZXRhaWxzIG9uIHRoZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIERUIG5vZGUgZm9yIHRoaXMgUEhZIGV4cGVjdHMsIGFuZCBob3cgdGhlc2Ugc2V0dGluZ3MgYXJlIGFwcGxpZWQuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBzZXR0aW5ncyAoY2xvY2sgZnJlcXVlbmNpZXMsIGNsb2NrIGRvbWFpbnMpLCBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzICh2b2x0YWdlIHJhaWxzLCBwb3dlciBkb21haW5zKSwgYW55IHJlcXVpcmVkIGludGVycnVwdCBsaW5lcywgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIGFkZHJlc3NlcyBvciBvZmZzZXRzIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoaXMgc3BlY2lmaWMgZHJpdmVyIHRvIGluaXRpYWxpemUgdGhpcyBzcGVjaWZpYyBQSFkuIFRoZSBzcGVjaWZpY3Mgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgcGFydGljdWxhciBuYW5lbmctY29tYnBoeS4gSSYjMzk7bGwgYWxzbyBiZSBleGFtaW5pbmcgaG93IHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIHRoZSBvdGhlciBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHBpZWNlIHRvZ2V0aGVyIHRoZSBlbnRpcmUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIFJvY2tjaGlwIFNvQyBjb250ZXh0LCBzbyB0aGF0IGlmIHRoZXJlIHdlcmUgYSBtYWxmdW5jdGlvbiwgSSB3b3VsZCBrbm93IGhvdyB0byB0cm91Ymxlc2hvb3QgdGhpcyBkZXZpY2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGh5L3JvY2tjaGlwL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9JTk5PX1VTQjIpXHQmIzQzOz0gcGh5LXJvY2tjaGlwLWlubm8tdXNiMi5vXG5kcml2ZXJzL3BoeS9yb2NrY2hpcC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSlcdCYjNDM7PSBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkub1xuZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9QQ0lFKVx0XHQmIzQzOz0gcGh5LXJvY2tjaGlwLXBjaWUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgwMwoJCQkJCQkJb3V0cHV0OiAzNTkKCQkJCQkJCXRob3VnaHRzOiAyOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUkszNTY4IFhQQ1MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJIHNlZSBpdCYjMzk7cyBhZGRpbmcgYFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQk9fUEhZYCB0byB0aGUgY29uZmlncywgc28gdGhhdCYjMzk7cyB0aGUgZHJpdmVyLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgUm9ja2NoaXAgUkszNTY4IFhQQ1MgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gYWZmZWN0cyB0aGUgYHBjcy14cGNzYCwgYHN0bW1hY2AsIGFuZCBgZHdtYWMtaW50ZWxgIGRyaXZlcnMuCgpUaGUgdHJpY2t5IHBhcnQgaXMgdGhhdCB0aGUgcGxhdGZvcm0gZHJpdmVyIGl0c2VsZiwgdGhlIFJvY2tjaGlwIHNwZWNpZmljIGJpdCwgbWlnaHQgYmUgaGFyZCB0byBoaXQgaW4gbXkgdXN1YWwgdmlydHVhbGl6ZWQgc2V0dXAgd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24uIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgc29tZSAqZ2VuZXJpYyogY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgcmVmYWN0b3JpbmcgaW4gdGhlIGBzdG1tYWNgIGluaXRpYWxpemF0aW9uIGZsb3cgaXMgaW50ZXJlc3RpbmcsIGFuZCB0aGUgY2hhbmdlcyB0byB0aGUgSW50ZWwgbUdCRSBQQ0kgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApIHRvIHVzZSB0aGF0IG5ldyBpbml0aWFsaXphdGlvbiBhcmUgZGVmaW5pdGVseSBpbiBzY29wZS4gSSBjYW4gZ2V0IHRvIHRoZXNlLCByZWdhcmRsZXNzIG9mIHNwZWNpZmljIGhhcmR3YXJlLiBBZGRpdGlvbmFsbHksIHRoZSBwYXRjaCBhbHRlcnMgdGhlIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgaW4gdGhlIGdlbmVyaWMgYHBjcy14cGNzLmNgIGRyaXZlciBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhvc2UgYXJlIGFsc28gcmVhY2hhYmxlLgoKR2l2ZW4gdGhlc2UgZ2VuZXJpYyBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZSByZWFjaGFiaWxpdHkgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIG1hbmlwdWxhdGlvbiwgSSYjMzk7ZCBzYXkgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGZ1enphYmxlLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgZ2V0IHRoaXMgYWRkZWQgdG8gdGhlIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDUyYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDU19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtEV01BQ19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleCYjMzQ7LAogICAgJiMzNDt4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzX3NldHVwJiMzNDssCiAgICAmIzM0O3JrX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3hwY3NfcmtfcHJvYmUmIzM0OywKICAgICYjMzQ7eHBjc19ya19jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJiMzOTtzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDUyYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDU19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtEV01BQ19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleCYjMzQ7LAogICAgJiMzNDt4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzX3NldHVwJiMzNDssCiAgICAmIzM0O3JrX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3hwY3NfcmtfcHJvYmUmIzM0OywKICAgICYjMzQ7eHBjc19ya19jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJiMzOTtzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjI4LjEyNDIzNjU4N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTMxMzQ0NTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiLFxuICAgIFwiUENTX1hQQ1NcIixcbiAgICBcIlBDU19YUENTX1JPQ0tDSElQXCIsXG4gICAgXCJEV01BQ19ST0NLQ0hJUFwiLFxuICAgIFwiUEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paVwiLFxuICAgIFwieHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4XCIsXG4gICAgXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcIixcbiAgICBcImludGVsX21nYmVfcGNzX2luaXRcIixcbiAgICBcInN0bW1hY19wY3Nfc2V0dXBcIixcbiAgICBcInJrX3Bjc19pbml0XCIsXG4gICAgXCJ4cGNzX3JrX3Byb2JlXCIsXG4gICAgXCJ4cGNzX3JrX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlcidzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjguMTI0MjQxMTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ2OTQ1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbkBAIC0wLDAgKzEsMTI2IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIENvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcXG4rICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxcbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXFxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcXG4rICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxcbitcXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxcbisgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxcbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXFxuK1xcbisgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyAocGNzLW1paUAwLi4zKSB0aGF0IGNhbiBiZVxcbisgIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZCByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzXFxuKyAgdmlhIHRoZSBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xcbitcXG4rICAnI2FkZHJlc3MtY2VsbHMnOlxcbisgICAgY29uc3Q6IDFcXG4rXFxuKyAgJyNzaXplLWNlbGxzJzpcXG4rICAgIGNvbnN0OiAwXFxuK1xcbisgIHJlZzpcXG4rICAgIGRlc2NyaXB0aW9uOiB8XFxuKyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcXG4rICAgICAgQVBCMyBidXMuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBjbG9ja3M6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcXG4rICAgICAgLSBjc3I6IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyXFxuKyAgICAgICAgYWNjZXNzLlxcbisgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxcbisgICAgICAgIEV0aGVybmV0IChFRUUpIG9wZXJhdGlvbi5cXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBtYXhJdGVtczogMlxcbitcXG4rICBjbG9jay1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBjc3JcXG4rICAgICAgLSBjb25zdDogZWVlXFxuK1xcbisgIHBoeXM6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXFxuKyAgICAgIHRoZSBzZXJpYWwgbGFuZXMgZm9yIDEwMDBCQVNFLVggLyBTR01JSSAvIFFTR01JSS5cXG4rICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDU1xcbisgICAgICByZWdpc3RlciBhY2Nlc3MuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBwaHktbmFtZXM6XFxuKyAgICBjb25zdDogc2VyZGVzXFxuK1xcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLlxcbisgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXFxuKyAgICAgIHN1cHBsaWVzIHRoZSBTZXJEZXMgUEhZLlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJecGNzLW1paUBbMC0zXSRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBPbmUgb2YgdGhlIGZvdXIgTUlJIHBvcnRzIG9mIHRoZSBYUENTLlxcbisgICAgICBUaGUgcG9ydCBudW1iZXIgaXMgc3BlY2lmaWVkIGJ5IHRoZSByZWcgcHJvcGVydHkgKDAuLjMpLlxcbisgICAgICBUaGUgcG9ydCBpcyBsaW5rZWQgdG8gYW4gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXIgdmlhIHRoZVxcbisgICAgICBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMncyBkZXZpY2UgdHJlZSBub2RlLlxcbitcXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtaW5pbXVtOiAwXFxuKyAgICAgICAgbWF4aW11bTogM1xcbisgICAgICAgIGRlc2NyaXB0aW9uOiB8XFxuKyAgICAgICAgICBNSUkgcG9ydCBudW1iZXIgb2YgUENTLlxcbitcXG4rICAgICAgc3RhdHVzOiB0cnVlXFxuK1xcbisgICAgcmVxdWlyZWQ6XFxuKyAgICAgIC0gcmVnXFxuK1xcbisgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZ1xcbisgIC0gY2xvY2tzXFxuKyAgLSBjbG9jay1uYW1lc1xcbitcXG4rYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcXHUwMDNlXFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcXHUwMDNlXFxuK1xcbisgICAgcGNzQGZkYTAwMDAwIHtcXG4rICAgICAgY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCI7XFxuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgcmVnID0gXFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFxcdTAwM2U7XFxuKyAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Y3J1IFBDTEtfWFBDU1xcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y3J1IENMS19YUENTX0VFRVxcdTAwM2U7XFxuKyAgICAgIGNsb2NrLW5hbWVzID0gXFxcImNzclxcXCIsIFxcXCJlZWVcXFwiO1xcbisgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVxcdTAwM2U7XFxuKyAgICAgIHBoeS1uYW1lcyA9IFxcXCJzZXJkZXNcXFwiO1xcbisgICAgICBwb3dlci1kb21haW5zID0gXFx1MDAzY1xcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVxcdTAwM2U7XFxuK1xcbisgICAgICBwY3MtbWlpQDAge1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuaW5kZXggMzc5YjA4YmQ5ZTk3YTYuLjYxNzMxOTJlMzFhYjJmIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuQEAgLTgwLDYgKzgwLDEzIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjpcXG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXFxuIFxcbisgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6XFxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcXG4rICAgIGVudW06IFswLCAxXVxcbisgICAgZGVmYXVsdDogMFxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFNlbGVjdCBnbWFjMCBvciBnbWFjMSB0byBiZSB1c2VkIGFzIFNHTUlJIGNvbnRyb2xsZXIuXFxuK1xcbiAgIFxcXCIjcGh5LWNlbGxzXFxcIjpcXG4gICAgIGNvbnN0OiAxXFxuIFxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggODA2YmQyZDgwZDE1MzUuLjhjYmE2YTBhMmRkMDM0IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjM0NjMsNiArMjM0NjMsMTUgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbFxcbiBGOlxcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxcbiBcXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcXG4rTTpcXHRDb2lhIFByYW50IFxcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXFx1MDAzZVxcbitMOlxcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXG4rTDpcXHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXFxuK1M6XFx0TWFpbnRhaW5lZFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXFxuK0Y6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxuK1xcbiBST0NLRVIgRFJJVkVSXFxuIE06XFx0SmlyaSBQaXJrbyBcXHUwMDNjamlyaUByZXNudWxsaS51c1xcdTAwM2VcXG4gTDpcXHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5pbmRleCA1OGMxMDUyYmE4ZWYzNS4uOTFjMTdiNjI0ZmQxN2QgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAvZHRzLXYxLztcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwicmszNTY4LmR0c2lcXFwiXFxuQEAgLTI0Miw2ICsyNDMsNyBAQCBcXHUwMDI2Y29tYnBoeTEge1xcbiBcXG4gXFx1MDAyNmNvbWJwaHkyIHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbitcXHRyb2NrY2hpcCxzZ21paS1tYWMtc2VsID0gXFx1MDAzYzBcXHUwMDNlO1xcbiB9O1xcbiBcXG4gXFx1MDAyNmNwdTAge1xcbkBAIC0yNjAsOSArMjYyLDE4IEBAIFxcdTAwMjZjcHUzIHtcXG4gXFx0Y3B1LXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dmRkX2NwdVxcdTAwM2U7XFxuIH07XFxuIFxcbi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovXFxuKy8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAqL1xcbiBcXHUwMDI2Z21hYzAge1xcbi1cXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmNydSBTQ0xLX0dNQUMwX1JYX1RYXFx1MDAzZTtcXG4rXFx0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFxcdTAwM2NcXHUwMDI2eHBjc19nbWFjMF9jbGtcXHUwMDNlO1xcbitcXHRwY3MtaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZ4cGNzX21paTBcXHUwMDNlO1xcbitcXHRtYW5hZ2VkID0gXFxcImluLWJhbmQtc3RhdHVzXFxcIjtcXG4rXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2c2dtaWlfcGh5XFx1MDAzZTtcXG4rXFx0cGh5LW1vZGUgPSBcXFwic2dtaWlcXFwiO1xcbitcXHRwaHktc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2Y2NfM3YzXFx1MDAzZTtcXG4rXFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4rXFx0cGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9taWltXFx1MDAzZTtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG4gLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovXFxuQEAgLTM0MSw2ICszNTIsMzkgQEAgXFx1MDAyNmkyczBfOGNoIHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG4rXFx1MDAyNm1kaW8wIHtcXG4rXFx0c2dtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhXFxcIjtcXG4rXFx0XFx0cmVnID0gXFx1MDAzYzB4M1xcdTAwM2U7XFxuK1xcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MxMDAwXFx1MDAzZTtcXG4rXFx0XFx0ZWVlLWJyb2tlbi0xMGd0O1xcbitcXHRcXHRlZWUtYnJva2VuLTEwZ2t4NDtcXG4rXFx0XFx0ZWVlLWJyb2tlbi0xMGdrcjtcXG4rXFx0XFx0cmVzZXQtYXNzZXJ0LXVzID0gXFx1MDAzYzIwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZGVhc3NlcnQtdXMgPSBcXHUwMDNjMTAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbitcXG4rXFx0XFx0bGVkcyB7XFxuK1xcdFxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdFxcdGxlZEAxIHtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRjb2xvciA9IFxcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XFxuK1xcdFxcdFxcdFxcdGRlZmF1bHQtc3RhdGUgPSBcXFwia2VlcFxcXCI7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRsZWRAMiB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbit9O1xcbitcXG4gXFx1MDAyNm1kaW8xIHtcXG4gXFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcXFwiO1xcbkBAIC0zNTAsNiArMzk0LDI1IEBAIHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbiBcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1xcdTAwM2U7XFxuIFxcdFxcdHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzE1MDBcXHUwMDNlO1xcbiBcXHRcXHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MxNTAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGxlZHMge1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHRsZWRAMSB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0bGVkQDIge1xcbitcXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGNvbG9yID0gXFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjtcXG4rXFx0XFx0XFx0XFx0ZGVmYXVsdC1zdGF0ZSA9IFxcXCJrZWVwXFxcIjtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuQEAgLTU4NiwzICs2NDksMTMgQEAgXFx1MDAyNnhpbjMyayB7XFxuIFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuIFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2xrMzJrX291dDFcXHUwMDNlO1xcbiB9O1xcbitcXG4rXFx1MDAyNnhwY3Mge1xcbitcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuK1xcdHBoeXMgPSBcXHUwMDNjXFx1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXFx1MDAzZTtcXG4rXFx0cGh5LW5hbWVzID0gXFxcInNlcmRlc1xcXCI7XFxuK307XFxuK1xcbitcXHUwMDI2eHBjc19taWkwIHtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbit9O1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbmluZGV4IDNiYzY1M2YwMjdmMWZlLi45ODllMTY0YzBlYjM5OCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXFxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbkBAIC0xMTAsNiArMTEwLDUxIEBAIHNhdGEwOiBzYXRhQGZjMDAwMDAwIHtcXG4gXFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4gXFx0fTtcXG4gXFxuK1xcdHhwY3M6IHBjc0BmZGEwMDAwMCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4LXhwY3NcXFwiO1xcbitcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDBcXHUwMDNlO1xcbitcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmNydSBQQ0xLX1hQQ1NcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmNydSBDTEtfWFBDU19FRUVcXHUwMDNlO1xcbitcXHRcXHRjbG9jay1uYW1lcyA9IFxcXCJjc3JcXFwiLCBcXFwiZWVlXFxcIjtcXG4rXFx0XFx0cG93ZXItZG9tYWlucyA9IFxcdTAwM2NcXHUwMDI2cG93ZXIgUkszNTY4X1BEX1BJUEVcXHUwMDNlO1xcbitcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXG4rXFx0XFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcbitcXHRcXHR4cGNzX21paTE6IHBjcy1taWlAMSB7XFxuK1xcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0XFx0fTtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMjogcGNzLW1paUAyIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjM1xcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcdH07XFxuK1xcbitcXHR4cGNzX2dtYWMwX2NsazogeHBjcy1nbWFjMC1jbG9jayB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZml4ZWQtY2xvY2tcXFwiO1xcbitcXHRcXHRjbG9jay1mcmVxdWVuY3kgPSBcXHUwMDNjMTI1MDAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcImNsa19nbWFjMF94cGNzX21paVxcXCI7XFxuK1xcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFx0fTtcXG4rXFxuK1xcdHhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHtcXG4rXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmaXhlZC1jbG9ja1xcXCI7XFxuK1xcdFxcdGNsb2NrLWZyZXF1ZW5jeSA9IFxcdTAwM2MxMjUwMDAwMDBcXHUwMDNlO1xcbitcXHRcXHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcXFwiY2xrX2dtYWMxX3hwY3NfbWlpXFxcIjtcXG4rXFx0XFx0I2Nsb2NrLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHR9O1xcbitcXG4gXFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcXG4gXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmXFxcIiwgXFxcInN5c2NvblxcXCI7XFxuIFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHhmZGM3MDAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcXG5pbmRleCBlM2RkNWFkZGE1YWNhZi4uNTA4OGFjYzA2OTgyZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcXG5AQCAtMTcwLDYgKzE3MCw3IEBAIGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiBcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXFxuIFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuK1xcdHNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUFxcbiBcXHRoZWxwXFxuIFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uMDgxMzIzYzMyYmNjMTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNTcyLDEzICs1NzIsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuIFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4rXFx0aW50IGFkZHI7XFxuK1xcbitcXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpO1xcbitcXG4rXFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIikpIHtcXG4rXFx0XFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xcbitcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0YWRkciA9IGZmcyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykgLSAxO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVxcdTAwM2VtaWksIGFkZHIpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4tXFx0LyogcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YS1cXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXFxuLVxcdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXFxuLVxcdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXFxuLVxcdCAqL1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4gfVxcbiBcXG5AQCAtNzAyLDYgKzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ICAgIHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXQtXFx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcXG4rXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcXG5pbmRleCAxOWYzNGUxOGJmZWYyYy4uOWFmMzJjMjZmOWMxNDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXFxuQEAgLTgxLDggKzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyB2b2lkIHJlbmVzYXNfZ21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmVuZXNhc19nbWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuY1xcbmluZGV4IDhkNzA0MmU2ODkyNjE5Li5lY2E0ODJiNGI2YmZjMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuY1xcbkBAIC0yMCw2ICsyMCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xcbiBcXHR2b2lkICgqc2V0X3RvX3JnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0XFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XFxuIFxcdHZvaWQgKCpzZXRfdG9fcm1paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xcbitcXHR2b2lkICgqc2V0X3RvX3NnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuIFxcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXFxuIFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQpO1xcbiBcXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xcbkBAIC02Myw2ICs2NSw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XFxuIFxcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcmdtaWk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcm1paTtcXG4rXFx0Ym9vbCBzdXBwb3J0c19zZ21paTtcXG4gXFx0Ym9vbCBwaHBfZ3JmX3JlcXVpcmVkO1xcbiBcXHRib29sIHJlZ3NfdmFsaWQ7XFxuIFxcdHUzMiByZWdzW107XFxuQEAgLTk4LDYgKzEwMSw3IEBAIHN0cnVjdCBya19wcml2X2RhdGEge1xcbiBcXHRib29sIGludGVncmF0ZWRfcGh5O1xcbiBcXHRib29sIHN1cHBvcnRzX3JnbWlpO1xcbiBcXHRib29sIHN1cHBvcnRzX3JtaWk7XFxuK1xcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XFxuIFxcbiBcXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcXG4gXFx0aW50IG51bV9jbGtzO1xcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xcbiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMVxcdFxcdDB4MDM4Y1xcbiBcXG4gLyogUkszNTY4X0dSRl9HTUFDMF9DT04xIFxcdTAwMjZcXHUwMDI2IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqL1xcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSVxcdFxcdEdSRl9DTFJfQklUKDcpXFxuKyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUlcXHRcXHRHUkZfQklUKDcpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMXFx0XFx0XFx0R1JGX0JJVCgzKVxcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcXHRcXHRHUkZfQ0xSX0JJVCgzKVxcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcXHRcXHRHUkZfQklUKDEpXFxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXFxuIFxcdFxcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xcbiBcXG4gXFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVxcdTAwM2VncmYsIGNvbjEsXFxuK1xcdFxcdCAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHxcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHxcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19zZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4re1xcbitcXHR1MzIgY29uMTtcXG4rXFxuK1xcdGNvbjEgPSAoYnNwX3ByaXYtXFx1MDAzZWlkID09IDEpID8gUkszNTY4X0dSRl9HTUFDMV9DT04xIDpcXG4rXFx0XFx0XFx0XFx0ICAgICBSSzM1NjhfR1JGX0dNQUMwX0NPTjE7XFxuK1xcbitcXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXFx1MDAzZWdyZiwgY29uMSwgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkpO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7XFxuIFxcdC5pbml0ID0gcmszNTY4X2luaXQsXFxuIFxcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxcbitcXHQuc2V0X3RvX3NnbWlpID0gcmszNTY4X3NldF90b19zZ21paSxcXG4rXFxuIFxcdC5zZXRfc3BlZWQgPSBya19zZXRfY2xrX21hY19zcGVlZCxcXG4gXFxuIFxcdC5nbWFjX3BoeV9pbnRmX3NlbF9tYXNrID0gR0VOTUFTS19VMTYoNiwgNCksXFxuIFxcbiBcXHQuc3VwcG9ydHNfcm1paSA9IHRydWUsXFxuK1xcdC5zdXBwb3J0c19zZ21paSA9IHRydWUsXFxuIFxcbiBcXHQucmVnc192YWxpZCA9IHRydWUsXFxuIFxcdC5yZWdzID0ge1xcbkBAIC0xMjA4LDYgKzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0ZGV2X2Vycihic3BfcHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbCB0byBkaXNhYmxlIHBoeS1zdXBwbHlcXFxcblxcXCIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xcbitcXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcXG4rXFxuK1xcdHBjc19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgXFxcInBjcy1oYW5kbGVcXFwiLCAwKTtcXG4rXFx0aWYgKCFwY3Nfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHR4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi1cXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XFxuK1xcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcXG4rXFx0aWYgKElTX0VSUih4cGNzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoeHBjcyk7XFxuK1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuK3tcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0eHBjc19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MgPSBOVUxMO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpya19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcylcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbiBcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyAqb3BzKVxcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbiBcXG4gXFx0YnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3JnbWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19yZ21paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3JnbWlpO1xcbiBcXHRic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cXHUwMDNlc3VwcG9ydHNfcm1paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3JtaWk7XFxuK1xcdGJzcF9wcml2LVxcdTAwM2VzdXBwb3J0c19zZ21paSA9IG9wcy1cXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXFx1MDAzZXNldF90b19zZ21paTtcXG4gXFxuIFxcdGlmIChvcHMtXFx1MDAzZWluaXQpIHtcXG4gXFx0XFx0cmV0ID0gb3BzLVxcdTAwM2Vpbml0KGJzcF9wcml2KTtcXG5AQCAtMTM2MSw2ICsxNDE5LDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19jaGVja19vcHMoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdGlmICghYnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3JtaWkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdFxcdGlmICghYnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3NnbWlpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGRldl9lcnIoYnNwX3ByaXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFxcInVuc3VwcG9ydGVkIGludGVyZmFjZSAlZFxcXCIsIGJzcF9wcml2LVxcdTAwM2VwaHlfaWZhY2UpO1xcbkBAIC0xMzc5LDYgKzE0NDEsOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdGlmIChic3BfcHJpdi1cXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcXG4rXFx0XFx0Z290byBzZXRfbW9kZTtcXG4rXFxuIFxcdHJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xNDE2LDcgKzE0ODEsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHQvKnJtaWkgb3IgcmdtaWkqL1xcbitzZXRfbW9kZTpcXG4rXFx0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXFxuIFxcdHN3aXRjaCAoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LCBcXFwiaW5pdCBmb3IgUkdNSUlcXFxcblxcXCIpO1xcbkBAIC0xNDQ3LDYgKzE1MTMsMTEgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdGlmIChic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfdG9fcm1paSlcXG4gXFx0XFx0XFx0YnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdFxcdGRldl9pbmZvKGRldiwgXFxcImluaXQgZm9yIFNHTUlJXFxcXG5cXFwiKTtcXG4rXFx0XFx0aWYgKGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19zZ21paSlcXG4rXFx0XFx0XFx0YnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3NnbWlpKGJzcF9wcml2KTtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiTk8gaW50ZXJmYWNlIGRlZmluZWQhXFxcXG5cXFwiKTtcXG4gXFx0fVxcbkBAIC0xNDg2LDYgKzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxcbiBcXG4gXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19ybWlpKVxcbiBcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xcbitcXG4rXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19zZ21paSlcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuQEAgLTE2MDIsNiArMTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcXG4gXFxuK1xcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0XFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gTlVMTDtcXG4rXFxuK1xcdFxcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xcbitcXHR9XFxuK1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcXG5pbmRleCAxMzYzNDk2NWJjMTlhMS4uMDFkZjQ3NzZlZGIzZmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXFxuQEAgLTM1LDggKzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCByem4xX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4ge1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbi1cXHRcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyem4xX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG5pbmRleCAxZDdmMGE1N2QyODg5Ny4uNmQ0YmMxZmU4Zjc1MTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuQEAgLTUzOSw4ICs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyB2b2lkIHNvY2ZwZ2FfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuLVxcdFxcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqc29jZnBnYV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5pbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuLVxcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4tXFx0aW50IGFkZHIsIHJldDtcXG4tXFxuLVxcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuLVxcbi1cXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpIHtcXG4tXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQocHJpdik7XFxuLVxcdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXFxcInBjcy1oYW5kbGVcXFwiKSkge1xcbi1cXHRcXHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIiwgMCk7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XFxuLVxcdFxcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xcbi1cXHRcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XFxuLVxcdH0gZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykge1xcbi1cXHRcXHRhZGRyID0gZmZzKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZXBjc19tYXNrKSAtIDE7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXFx1MDAzZW1paSwgYWRkcik7XFxuLVxcdFxcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHR9XFxuIFxcbitcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfaW5pdChwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2aWNlLCByZXQsIFxcXCJObyB4UENTIGZvdW5kXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGlmICh4cGNzKVxcbi1cXHRcXHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW11bHRfZmFjdF8xMDBucyk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNDYzLDE0ICs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBjc19leGl0KVxcbi1cXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfZXhpdChwcml2KTtcXG4tXFxuLVxcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuLVxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rXFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQocHJpdik7XFxuIH1cXG4gXFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuaW5kZXggZTQxN2ZkNjZmNjYwYWQuLjMyODZiYzkzZTcwMjY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcXG5AQCAtMTIsNiArMTIsMjggQEAgY29uZmlnIFBDU19YUENTXFxuIFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXFxuIFxcdCAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLlxcbiBcXG4raWYgUENTX1hQQ1NcXG4rXFxuK2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STVxcbitcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4rXFx0ZGVmYXVsdCBQQ1NfWFBDU1xcbitcXHRoZWxwXFxuK1xcdCAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbitcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4rXFx0ICBkYXRhIGZvciBzZXR1cC5cXG4rXFxuK1xcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4rXFxuK2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxcbitcXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbitcXHRoZWxwXFxuK1xcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXFxuK1xcbitcXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4rXFxuK2VuZGlmICMgUENTX1hQQ1NcXG4rXFxuIGNvbmZpZyBQQ1NfTFlOWFxcbiBcXHR0cmlzdGF0ZVxcbiBcXHRoZWxwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxcbmluZGV4IDRmNzkyMDYxOGI5MDA1Li5jODA5YjdmOTQyYTUxOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG5AQCAtMSwxMCArMSw5IEBAXFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcXG4gXFxuLXBjc194cGNzLSQoQ09ORklHX1BDU19YUENTKVxcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXFxcXG4tXFx0XFx0XFx0XFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xcbi1cXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSArPSBwY3MteHBjcy1yay5vXFxuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVkOTY5YTM4ZDU0NGQ1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXFxuQEAgLTAsMCArMSw1MjYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLypcXG4rICogUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxuKyAqXFxuKyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgU2VyZ2UgU2VtaW5cXG4rICpcXG4rICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuXFxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBDb2lhIFByYW50XFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0b21pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb2xsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fZG9tYWluLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc2l6ZXMuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJwY3MteHBjcy5oXFxcIlxcbitcXG4rc3RydWN0IGR3X3hwY3Nfcmsge1xcbitcXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbitcXHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlO1xcbitcXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xcbitcXHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xcbitcXHRzdHJ1Y3QgY2xrICplZWVfY2xrO1xcbit9O1xcbitcXG4rc3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpXFxuK3tcXG4rXFx0cmV0dXJuIEZJRUxEX1BSRVAoMHg3MDAwMCwgZGV2KSB8IEZJRUxEX1BSRVAoMHhmZmZmLCByZWcpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHB0cmRpZmZfdCBjc3I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gcmVhZGwocHhwY3MtXFx1MDAzZXJlZ19iYXNlICsgKGNzciBcXHUwMDNjXFx1MDAzYyAyKSkgXFx1MDAyNiAweGZmZmY7XFxuK1xcbitcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbit7XFxuK1xcdHB0cmRpZmZfdCBjc3I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0d3JpdGVsKHZhbCwgcHhwY3MtXFx1MDAzZXJlZ19iYXNlICsgKGNzciBcXHUwMDNjXFx1MDAzYyAyKSk7XFxuK1xcbitcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXFx0MlxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkyXFx0M1xcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkzXFx0NFxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcXHQ2XFxuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSVxcdDdcXG4rXFxuK3N0YXRpYyBib29sIHhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGludCBhZGRyKVxcbit7XFxuK1xcdHJldHVybiAhKGFkZHIgXFx1MDAzYyAwIHx8IGFkZHIgXFx1MDAzZSAzKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXFxuK3tcXG4rXFx0c3dpdGNoIChkZXYpIHtcXG4rXFx0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xcbitcXHRjYXNlIE1ESU9fTU1EX1ZFTkQyOlxcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0fVxcbitcXG4rXFx0c3dpdGNoIChhZGRyKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xcbitcXHRjYXNlIDI6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzd2l0Y2ggKGRldikge1xcbitcXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XFxuK1xcdGNhc2UgTURJT19NTURfVkVORDI6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOWElPO1xcbitcXHR9XFxuK1xcbitcXHQvKiBXcml0YWJsZSBvbmx5IG9uIE1JSSAqL1xcbitcXHRzd2l0Y2ggKHJlZykge1xcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9JTlRSX1NUUzpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRElHX0NUUkwyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoYWRkcikge1xcbitcXHRjYXNlIDA6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xcbitcXHRjYXNlIDE6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XFxuK1xcdGNhc2UgMzpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgZGV2O1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBkZXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xcbitcXHRpZiAoZGV2IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcbitcXHRweHBjcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHhwY3MpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbitcXG4rXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHB4cGNzKTtcXG4rXFxuK1xcdHJldHVybiBweHBjcztcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFxcXCJzZXJkZXNcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXG4rXFx0cGh5X3Bvd2VyX29mZihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdHBoeV9leGl0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9pbml0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXHRcXHRnb3RvIHBtX2RvbWFpbjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBzZXJkZXNfcGh5O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitzZXJkZXNfcGh5OlxcbitcXHRwaHlfZXhpdChweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK3BtX2RvbWFpbjpcXG4rXFx0ZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVxcdTAwM2VwZGV2O1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4rXFxuK1xcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiTm8gcmVnLXNwYWNlIGZvdW5kXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyZXNvdXJjZV9zaXplKHJlcykgXFx1MDAzYyBTWl8yTSkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkludmFsaWQgcmVnLXNwYWNlIHNpemVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIG1hcCByZWctc3BhY2VcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihweHBjcy1cXHUwMDNlcmVnX2Jhc2UpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcbitcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXFx1MDAzZWVlZV9jbGspO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZWNzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwiY3NyXFxcIik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZWNzcl9jbGspKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXFx1MDAzZWNzcl9jbGspLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIkZhaWxlZCB0byBnZXQgQ1NSIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xcbitcXHRyZXQgPSBkZXZtX3BtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlZWVlX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJlZWVcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlZWVlX2NsaykpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlZWVlX2NsayksXFxuK1xcdFxcdFxcdFxcdFxcdCBcXFwiRmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVxcdTAwM2VlZWVfY2xrKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdGF0aWMgYXRvbWljX3QgaWQgPSBBVE9NSUNfSU5JVCgtMSk7XFxuK1xcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApO1xcbitcXHRpZiAoIWJ1cylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUm9ja2NoaXAgRFcgWFBDUyBNQ0kvQVBCM1xcXCI7XFxuK1xcdGJ1cy1cXHUwMDNlcmVhZCA9IHhwY3NfcmtfcmVhZF9jMjI7XFxuK1xcdGJ1cy1cXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcXG4rXFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XFxuK1xcdGJ1cy1cXHUwMDNld3JpdGVfYzQ1ID0geHBjc19ya193cml0ZV9jNDU7XFxuK1xcdGJ1cy1cXHUwMDNlcGh5X21hc2sgPSB+MDtcXG4rXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuK1xcdGJ1cy1cXHUwMDNlcHJpdiA9IHB4cGNzO1xcbitcXG4rXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLFxcbitcXHRcXHQgXFxcInJvY2tjaGlwX2R3eHBjcy0leFxcXCIsIGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZpZCkpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXRcXG4rXFx0ICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NSc1xcbitcXHQgKiBhY2Nlc3MuXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2VidXMgPSBidXM7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRweHBjcyA9IHhwY3NfcmtfY3JlYXRlX2RhdGEocGRldik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cXG4rXFx0ICogbXVzdCBiZSBwb3dlcmVkIG9uIGJlZm9yZSBhbnkgcmVnaXN0ZXIgYWNjZXNzLCBvdGhlcndpc2UgdGhlIFNvQyB3aWxsXFxuK1xcdCAqIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydCAoU0Vycm9yKS5cXG4rXFx0ICpcXG4rXFx0ICogQWNjZXNzaW5nIHRoZSBYUENTIHJlZ2lzdGVycyBhbHNvIHJlcXVpcmVzIGEgVFggY2xvY2sgZnJvbSB0aGUgU2VyRGVzLFxcbitcXHQgKiB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSBzb2Z0IHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X2luaXQocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24ocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSB4cGNzX3JrX2luaXRfY2xrKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3NfcmtfaW5pdF9idXMocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpwY3NfbnA7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcXG4rXFx0c3RydWN0IGR3X3hwY3MgKnhwY3M7XFxuK1xcdHUzMiBwb3J0O1xcbitcXG4rXFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcbitcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZWdcXFwiLCBcXHUwMDI2cG9ydCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXFxuK1xcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xcbitcXHRpZiAoIXBjc19ucClcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcbitcXHRpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkge1xcbitcXHRcXHRvZl9ub2RlX3B1dChwY3NfbnApO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4rXFx0fVxcbitcXG4rXFx0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0aWYgKCFwZGV2KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcXG4rXFxuK1xcdHB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuK1xcdGlmICghcHhwY3MgfHwgIXB4cGNzLVxcdTAwM2VidXMpIHtcXG4rXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XFxuK1xcdH1cXG4rXFxuK1xcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLVxcdTAwM2VidXMsIChpbnQpcG9ydCk7XFxuK1xcdGlmIChJU19FUlIoeHBjcykpIHtcXG4rXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0XFx0cmV0dXJuIHhwY3M7XFxuK1xcdH1cXG4rXFxuK1xcdGRldmljZV9saW5rX2FkZChkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUik7XFxuK1xcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiB4cGNzO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcXG4rXFxuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXG4rXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXG4rXFx0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cXHUwMDNlY3NyX2Nsayk7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB4cGNzX3JrX3BtX29wcyA9IHtcXG4rXFx0U0VUX1JVTlRJTUVfUE1fT1BTKHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxcbitcXHRcXHRcXHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxcbitcXHRcXHRcXHQgICBOVUxMKVxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCIgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7XFxuK1xcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcXG4rXFx0LnByb2JlID0geHBjc19ya19wcm9iZSxcXG4rXFx0LmRyaXZlciA9IHtcXG4rXFx0XFx0Lm5hbWUgPSBcXFwicmtfeHBjcy1kd3hwY3NcXFwiLFxcbitcXHRcXHQucG0gPSBcXHUwMDI2eHBjc19ya19wbV9vcHMsXFxuK1xcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhwY3NfcmtfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkNvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXFxuQEAgLTgxNiw2ICs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xcbitcXHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXFxuIFxcdFxcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxcbiBcXHRcXHRcXHRcXHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSk7XFxuQEAgLTg4NCw3ICs4ODksNyBAQCBzdGF0aWMgaW50IHhwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleChzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFxuIFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpIHtcXG4gXFx0XFx0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXFxuLVxcdFxcdFxcdFxcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcXG4rXFx0XFx0XFx0XFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuQEAgLTEwNTgsNiArMTA2Myw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxcbiBcXG4gXFx0LyogUmVzZXQgbGlua19zdGF0ZSAqL1xcbiBcXHRzdGF0ZS1cXHUwMDNlbGluayA9IGZhbHNlO1xcbitcXHRzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUgPSBmYWxzZTtcXG4gXFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbiBcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSAwO1xcbkBAIC0xMDY5LDYgKzEwNzUsOCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUgPSByZXQgXFx1MDAyNiBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFI7XFxuK1xcbiBcXHRpZiAocmV0IFxcdTAwMjYgRFdfVlJfTUlJX0MzN19BTlNHTV9TUF9MTktTVFMpIHtcXG4gXFx0XFx0aW50IHNwZWVkX3ZhbHVlO1xcbiBcXG5AQCAtMTA4Niw3ICsxMDk0LDI0IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxcbiBcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xcbi1cXHR9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcXG4rXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbitcXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXFxuK1xcdGlmIChzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUpXFxuK1xcdFxcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XFxuK1xcbitcXHRpZiAoeHBjcy1cXHUwMDNlaW5mby5wbWEgIT0gV1hfVFhHQkVfWFBDU19QTUFfMTBHX0lEKSB7XFxuK1xcdFxcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xcbitcXHRcXHRpZiAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlKVxcbitcXHRcXHRcXHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxcbitcXHRcXHRcXHRcXHQgICAgQk1DUl9BTlJFU1RBUlQpO1xcbitcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyZXQgPT0gRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSKSB7XFxuIFxcdFxcdGludCBzcGVlZCwgZHVwbGV4O1xcbiBcXG4gXFx0XFx0c3RhdGUtXFx1MDAzZWxpbmsgPSB0cnVlO1xcbkBAIC0xMTEyLDcgKzExMzcsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0XFx0ZWxzZSBpZiAoZHVwbGV4IFxcdTAwMjYgQURWRVJUSVNFXzEwMDBYSEFMRilcXG4gXFx0XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xcbiBcXG4tXFx0XFx0eHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXFxuaW5kZXggMmIwZjE1MmY1NDcwOTEuLmZmMjkwYmMxODU4OWFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXFxuKysrIGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcXG5AQCAtMTg2LDYgKzE4Niw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyB7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5O1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMV9zZWw7XFxuK1xcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3NnbWlpX21hY19zZWw7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xcbiB9O1xcbkBAIC0yMTIsNiArMjEzLDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiB7XFxuIFxcdGJvb2wgZW5hYmxlX3NzYztcXG4gXFx0Ym9vbCBleHRfcmVmY2xrO1xcbiBcXHRzdHJ1Y3QgY2xrICpyZWZjbGs7XFxuK1xcdHUzMiBzZ21paV9tYWNfc2VsO1xcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXFxuQEAgLTM3NSw2ICszNzcsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJwaHlfcGFyc2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeVxcbiBcXG4gXFx0cHJpdi1cXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXFxcInJvY2tjaGlwLGV4dC1yZWZjbGtcXFwiKTtcXG4gXFxuK1xcdHByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwgPSAwO1xcbitcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcXFwicm9ja2NoaXAsc2dtaWktbWFjLXNlbFxcXCIsIFxcdTAwMjZwcml2LVxcdTAwM2VzZ21paV9tYWNfc2VsKTtcXG4rXFxuIFxcdHByaXYtXFx1MDAzZXBoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsIFxcXCJwaHlcXFwiKTtcXG4gXFx0LyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqL1xcbiBcXHRpZiAoUFRSX0VSUihwcml2LVxcdTAwM2VwaHlfcnN0KSA9PSAtRU5PRU5UKVxcbkBAIC04NzMsNiArODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxcbitcXHRcXHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXFx1MDAzZXBpcGVfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3NnbWlpX21hY19zZWwsXFxuK1xcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwgXFx1MDAzZSAwKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaXBlX2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7XFxuIFxcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGh5X2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7XFxuIFxcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGh5X2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV9zZWxfcXNnbWlpLCB0cnVlKTtcXG5AQCAtOTg0LDYgKzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcXG4gXFx0LmNvbjNfZm9yX3NhdGFcXHRcXHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXFxuIFxcdC8qIHBpcGUtZ3JmICovXFxuIFxcdC5waXBlX2NvbjBfZm9yX3NhdGFcXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXFxuK1xcdC5waXBlX3NnbWlpX21hY19zZWxcXHQ9IHsgMHgwMDQwLCAxLCAxLCAweDAwLCAweDAxIH0sXFxuIFxcdC5waXBlX3hwY3NfcGh5X3JlYWR5XFx0PSB7IDB4MDA0MCwgMiwgMiwgMHgwMCwgMHgwMSB9LFxcbiBcXHQudTNvdGcwX3BvcnRfZW5cXHRcXHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcXG4gXFx0LnUzb3RnMV9wb3J0X2VuXFx0XFx0PSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmggYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjg3MjNkNWJkNzVjY2VcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcbkBAIC0wLDAgKzEsMTEgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbitcXG4rI2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOS4xMDk5MjIxNzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDMyNzc1MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiLFxuICAgIFwiUENTX1hQQ1NcIixcbiAgICBcIlBDU19YUENTX1JPQ0tDSElQXCIsXG4gICAgXCJEV01BQ19ST0NLQ0hJUFwiLFxuICAgIFwiUEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paVwiLFxuICAgIFwieHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4XCIsXG4gICAgXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcIixcbiAgICBcImludGVsX21nYmVfcGNzX2luaXRcIixcbiAgICBcInN0bW1hY19wY3Nfc2V0dXBcIixcbiAgICBcInJrX3Bjc19pbml0XCIsXG4gICAgXCJ4cGNzX3JrX3Byb2JlXCIsXG4gICAgXCJ4cGNzX3JrX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlcidzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjE0ZmFkZjY3Yzc5M2E4XG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuQEAgLTAsMCArMSwxMjYgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwjXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4rXG4rdGl0bGU6IFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBDU1xuK1xuK21haW50YWluZXJzOlxuKyAgLSBDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgUm9ja2NoaXAgUkszNTY4IFNvQyBpbnRlZ3JhdGVzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbFxuKyAgQ29kaW5nIFN1YmxheWVyIChYUENTKS5cbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXG4rICBhbmQgdGhlIFBoeXNpY2FsIE1lZGl1bSBBdHRhY2htZW50IChQTUEpIHN1YmxheWVyIHRocm91Z2ggYSBNZWRpYVxuKyAgSW5kZXBlbmRlbnQgSW50ZXJmYWNlIChHTUlJKS5cbitcbisgIFRoZSBYUENTIGlzIGFjY2Vzc2VkIG92ZXIgdGhlIEFQQjMgYnVzIGFuZCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBhXG4rICBOYW5lbmcgQ29tYm8gU2VyRGVzIFBIWS5cbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXG4rXG4rICBUaGUgYmxvY2sgY29udGFpbnMgZm91ciBNSUkgcG9ydHMgKHBjcy1taWlAMC4uMykgdGhhdCBjYW4gYmVcbisgIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZCByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzXG4rICB2aWEgdGhlIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyBkZXZpY2UgdHJlZSBub2RlLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcm9ja2NoaXAscmszNTY4LXhwY3NcbitcbisgICcjYWRkcmVzcy1jZWxscyc6XG4rICAgIGNvbnN0OiAxXG4rXG4rICAnI3NpemUtY2VsbHMnOlxuKyAgICBjb25zdDogMFxuK1xuKyAgcmVnOlxuKyAgICBkZXNjcmlwdGlvbjogfFxuKyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcbisgICAgICBBUEIzIGJ1cy5cbisgICAgbWF4SXRlbXM6IDFcbitcbisgIGNsb2NrczpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcbisgICAgICAtIGNzcjogQVBCMyBidXMgaW50ZXJmYWNlIGNsb2NrIChjbGtfY3NyX2kpLCByZXF1aXJlZCBmb3IgcmVnaXN0ZXJcbisgICAgICAgIGFjY2Vzcy5cbisgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxuKyAgICAgICAgRXRoZXJuZXQgKEVFRSkgb3BlcmF0aW9uLlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgY2xvY2stbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IGNzclxuKyAgICAgIC0gY29uc3Q6IGVlZVxuK1xuKyAgcGh5czpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXG4rICAgICAgdGhlIHNlcmlhbCBsYW5lcyBmb3IgMTAwMEJBU0UtWCAvIFNHTUlJIC8gUVNHTUlJLlxuKyAgICAgIFRoZSBTZXJEZXMgbXVzdCBiZSBwb3dlcmVkIG9uIGFuZCBpbml0aWFsaXNlZCBiZWZvcmUgYW55IFhQQ1NcbisgICAgICByZWdpc3RlciBhY2Nlc3MuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBwaHktbmFtZXM6XG4rICAgIGNvbnN0OiBzZXJkZXNcbitcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIGRlc2NyaXB0aW9uOiB8XG4rICAgICAgUG93ZXIgZG9tYWluIGZvciB0aGUgWFBDUy5cbisgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXG4rICAgICAgc3VwcGxpZXMgdGhlIFNlckRlcyBQSFkuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5wY3MtbWlpQFswLTNdJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBPbmUgb2YgdGhlIGZvdXIgTUlJIHBvcnRzIG9mIHRoZSBYUENTLlxuKyAgICAgIFRoZSBwb3J0IG51bWJlciBpcyBzcGVjaWZpZWQgYnkgdGhlIHJlZyBwcm9wZXJ0eSAoMC4uMykuXG4rICAgICAgVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGVcbisgICAgICBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMncyBkZXZpY2UgdHJlZSBub2RlLlxuK1xuKyAgICBwcm9wZXJ0aWVzOlxuKyAgICAgIHJlZzpcbisgICAgICAgIG1pbmltdW06IDBcbisgICAgICAgIG1heGltdW06IDNcbisgICAgICAgIGRlc2NyaXB0aW9uOiB8XG4rICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuXG4rXG4rICAgICAgc3RhdHVzOiB0cnVlXG4rXG4rICAgIHJlcXVpcmVkOlxuKyAgICAgIC0gcmVnXG4rXG4rICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK3JlcXVpcmVkOlxuKyAgLSBjb21wYXRpYmxlXG4rICAtIHJlZ1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcdTAwM2VcbitcbisgICAgcGNzQGZkYTAwMDAwIHtcbisgICAgICBjb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1NjgteHBjc1wiO1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgcmVnID0gXHUwMDNjMHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwXHUwMDNlO1xuKyAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4rICAgICAgY2xvY2stbmFtZXMgPSBcImNzclwiLCBcImVlZVwiO1xuKyAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVx1MDAzZTtcbisgICAgICBwaHktbmFtZXMgPSBcInNlcmRlc1wiO1xuKyAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVx1MDAzZTtcbitcbisgICAgICBwY3MtbWlpQDAge1xuKyAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbisgICAgICB9O1xuKyAgICB9O1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5pbmRleCAzNzliMDhiZDllOTdhNi4uNjE3MzE5MmUzMWFiMmYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5AQCAtODAsNiArODAsMTMgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbisgICAgZW51bTogWzAsIDFdXG4rICAgIGRlZmF1bHQ6IDBcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbitcbiAgIFwiI3BoeS1jZWxsc1wiOlxuICAgICBjb25zdDogMVxuIFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44Y2JhNmEwYTJkZDAzNCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTIzNDYzLDYgKzIzNDYzLDE1IEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWxcbiBGOlx0c291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qXG4gXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcbitNOlx0Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4rTDpcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcbitMOlx0bGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZ1xuK1M6XHRNYWludGFpbmVkXG4rRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG4rRjpcdGRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG4rRjpcdGluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbitcbiBST0NLRVIgRFJJVkVSXG4gTTpcdEppcmkgUGlya28gXHUwMDNjamlyaUByZXNudWxsaS51c1x1MDAzZVxuIEw6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuaW5kZXggNThjMTA1MmJhOGVmMzUuLjkxYzE3YjYyNGZkMTdkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG5AQCAtMyw2ICszLDcgQEBcbiAvZHRzLXYxLztcbiBcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCJyazM1NjguZHRzaVwiXG5AQCAtMjQyLDYgKzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbitcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgKzI2MiwxOCBAQCBcdTAwMjZjcHUzIHtcbiBcdGNwdS1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfY3B1XHUwMDNlO1xuIH07XG4gXG4tLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0IChyZXF1aXJlIFNHTUlJKSAqL1xuKy8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAqL1xuIFx1MDAyNmdtYWMwIHtcbi1cdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdGFzc2lnbmVkLWNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBTQ0xLX0dNQUMwX1JYX1RYXHUwMDNlO1xuK1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuK1x0cGNzLWhhbmRsZSA9IFx1MDAzY1x1MDAyNnhwY3NfbWlpMFx1MDAzZTtcbitcdG1hbmFnZWQgPSBcImluLWJhbmQtc3RhdHVzXCI7XG4rXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2c2dtaWlfcGh5XHUwMDNlO1xuK1x0cGh5LW1vZGUgPSBcInNnbWlpXCI7XG4rXHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbitcdHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbitcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmdtYWMwX21paW1cdTAwM2U7XG4rXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiB9O1xuIFxuIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqL1xuQEAgLTM0MSw2ICszNTIsMzkgQEAgXHUwMDI2aTJzMF84Y2gge1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4gfTtcbiBcbitcdTAwMjZtZGlvMCB7XG4rXHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhXCI7XG4rXHRcdHJlZyA9IFx1MDAzYzB4M1x1MDAzZTtcbitcdFx0bWF4LXNwZWVkID0gXHUwMDNjMTAwMFx1MDAzZTtcbitcdFx0ZWVlLWJyb2tlbi0xMGd0O1xuK1x0XHRlZWUtYnJva2VuLTEwZ2t4NDtcbitcdFx0ZWVlLWJyb2tlbi0xMGdrcjtcbitcdFx0cmVzZXQtYXNzZXJ0LXVzID0gXHUwMDNjMjAwMDBcdTAwM2U7XG4rXHRcdHJlc2V0LWRlYXNzZXJ0LXVzID0gXHUwMDNjMTAwMDAwXHUwMDNlO1xuK1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4rXG4rXHRcdGxlZHMge1xuK1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rXHRcdFx0bGVkQDEge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXG4rXHRcdFx0bGVkQDIge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXHRcdH07XG4rXHR9O1xuK307XG4rXG4gXHUwMDI2bWRpbzEge1xuIFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdGNvbXBhdGlibGUgPSBcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXCI7XG5AQCAtMzUwLDYgKzM5NCwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiBcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuIFx0XHRyeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4gXHRcdHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMTUwMFx1MDAzZTtcbitcbitcdFx0bGVkcyB7XG4rXHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbitcdFx0XHRsZWRAMSB7XG4rXHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcdTAwM2U7XG4rXHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4rXHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCJrZWVwXCI7XG4rXHRcdFx0fTtcbitcbitcdFx0XHRsZWRAMiB7XG4rXHRcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfR1JFRU5cdTAwM2U7XG4rXHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4rXHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCJrZWVwXCI7XG4rXHRcdFx0fTtcbitcdFx0fTtcbiBcdH07XG4gfTtcbiBcbkBAIC01ODYsMyArNjQ5LDEzIEBAIFx1MDAyNnhpbjMyayB7XG4gXHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4gXHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZjbGszMmtfb3V0MVx1MDAzZTtcbiB9O1xuK1xuK1x1MDAyNnhwY3Mge1xuK1x0c3RhdHVzID0gXCJva2F5XCI7XG4rXHRwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4rXHRwaHktbmFtZXMgPSBcInNlcmRlc1wiO1xuK307XG4rXG4rXHUwMDI2eHBjc19taWkwIHtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuK307XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbmluZGV4IDNiYzY1M2YwMjdmMWZlLi45ODllMTY0YzBlYjM5OCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbkBAIC0xMTAsNiArMTEwLDUxIEBAIHNhdGEwOiBzYXRhQGZjMDAwMDAwIHtcbiBcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuIFx0fTtcbiBcbitcdHhwY3M6IHBjc0BmZGEwMDAwMCB7XG4rXHRcdGNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC14cGNzXCI7XG4rXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0XHRyZWcgPSBcdTAwM2MweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDBcdTAwM2U7XG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4rXHRcdGNsb2NrLW5hbWVzID0gXCJjc3JcIiwgXCJlZWVcIjtcbitcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuK1x0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXG4rXHRcdHhwY3NfbWlpMDogcGNzLW1paUAwIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcbitcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1xuK1x0XHR4cGNzX21paTI6IHBjcy1taWlAMiB7XG4rXHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXHRcdH07XG4rXG4rXHRcdHhwY3NfbWlpMzogcGNzLW1paUAzIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcdH07XG4rXG4rXHR4cGNzX2dtYWMwX2NsazogeHBjcy1nbWFjMC1jbG9jayB7XG4rXHRcdGNvbXBhdGlibGUgPSBcImZpeGVkLWNsb2NrXCI7XG4rXHRcdGNsb2NrLWZyZXF1ZW5jeSA9IFx1MDAzYzEyNTAwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCJjbGtfZ21hYzBfeHBjc19taWlcIjtcbitcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcdH07XG4rXG4rXHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4rXHRcdGNvbXBhdGlibGUgPSBcImZpeGVkLWNsb2NrXCI7XG4rXHRcdGNsb2NrLWZyZXF1ZW5jeSA9IFx1MDAzYzEyNTAwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCJjbGtfZ21hYzFfeHBjc19taWlcIjtcbitcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcdH07XG4rXG4gXHRwaXBlX3BoeV9ncmYwOiBzeXNjb25AZmRjNzAwMDAge1xuIFx0XHRjb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmXCIsIFwic3lzY29uXCI7XG4gXHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYzcwMDAwIDB4MCAweDEwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbmluZGV4IGUzZGQ1YWRkYTVhY2FmLi41MDg4YWNjMDY5ODJlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4rXHRzZWxlY3QgUENTX1hQQ1NfUk9DS0NISVBcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uMDgxMzIzYzMyYmNjMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTcyLDEzICs1NzIsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gXHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlbmVlZHNfcmVzZXQgPSB0cnVlO1xuIH1cbiBcbitzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTtcbitcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbitcdGludCBhZGRyO1xuK1xuK1x0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuK1xuK1x0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuK1x0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbitcdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRhZGRyID0gZmZzKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSAtIDE7XG4rXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbitcdH1cbitcbitcdGlmIChJU19FUlIoeHBjcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuK1xuK1x0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgaW50ZWxfbWdiZV9wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4rXHRcdHJldHVybjtcbitcbitcdHhwY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4tXHQvKiBwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXG4tXHQgKiBzaG91bGQgYWx3YXlzIGJlIGFuIFhQQ1MuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGFsd2F5c1xuLVx0ICogcmV0dXJuIHRoaXMgaWYgcHJlc2VudC5cbi1cdCAqL1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuIFx0cmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiB9XG4gXG5AQCAtNzAyLDYgKzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdCAgICBwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xuIFx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTtcbiBcdFx0cGxhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXQtXHUwMDNlcGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0O1xuK1x0XHRwbGF0LVx1MDAzZXBjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDtcbiBcdFx0cGxhdC1cdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuaW5kZXggMTlmMzRlMThiZmVmMmMuLjlhZjMyYzI2ZjljMTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbkBAIC04MSw4ICs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmVuZXNhc19nbWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5pbmRleCA4ZDcwNDJlNjg5MjYxOS4uZWNhNDgyYjRiNmJmYzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xuIFx0dm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XG4gXHR2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbitcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuK1x0Ym9vbCBzdXBwb3J0c19zZ21paTtcbiBcdGJvb2wgcGhwX2dyZl9yZXF1aXJlZDtcbiBcdGJvb2wgcmVnc192YWxpZDtcbiBcdHUzMiByZWdzW107XG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbitcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXHRcdDB4MDM4Y1xuIFxuIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSBcdTAwMjZcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xuIFxuIFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSxcbitcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuK3tcbitcdHUzMiBjb24xO1xuK1xuK1x0Y29uMSA9IChic3BfcHJpdi1cdTAwM2VpZCA9PSAxKSA/IFJLMzU2OF9HUkZfR01BQzFfQ09OMSA6XG4rXHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbitcbitcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuK1x0LnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksXG4rXG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuK1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldiwgXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwiKTtcbiB9XG4gXG4rc3RhdGljIGludCBya19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXG4rXHRwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdGlmICghcGNzX25vZGUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0eHBjcyA9IHhwY3NfcmtfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG4rXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcmtfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFxuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcmdtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JnbWlpO1xuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19ybWlpO1xuK1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCIsIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSw2ICsxNDQxLDkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuK1x0aWYgKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4rXHRcdGdvdG8gc2V0X21vZGU7XG4rXG4gXHRyZXQgPSBya19nZXRfcGh5X2ludGZfc2VsKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE0MTYsNyArMTQ4MSw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHQvKnJtaWkgb3IgcmdtaWkqL1xuK3NldF9tb2RlOlxuK1x0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXG4gXHRzd2l0Y2ggKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4gXHRcdGRldl9pbmZvKGRldiwgXCJpbml0IGZvciBSR01JSVxcblwiKTtcbkBAIC0xNDQ3LDYgKzE1MTMsMTEgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGlmIChic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkpXG4gXHRcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19ybWlpKGJzcF9wcml2KTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbitcdFx0ZGV2X2luZm8oZGV2LCBcImluaXQgZm9yIFNHTUlJXFxuXCIpO1xuK1x0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paSlcbitcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3NnbWlpKGJzcF9wcml2KTtcbitcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGRldiwgXCJOTyBpbnRlcmZhY2UgZGVmaW5lZCFcXG5cIik7XG4gXHR9XG5AQCAtMTQ4Niw2ICsxNTU3LDkgQEAgc3RhdGljIHZvaWQgcmtfZ2V0X2ludGVyZmFjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkICpic3BfcHJpdixcbiBcbiBcdGlmIChyay1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xuK1xuK1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTtcbiB9XG4gXG4gc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbkBAIC0xNjAyLDYgKzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4rXHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbitcdFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuK1xuK1x0XHQvKiBTR01JSSByZXF1aXJlcyBhIFBDUyAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19leGl0ID0gcmtfcGNzX2V4aXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuK1x0fVxuK1xuIFx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5pbmRleCAxMzYzNDk2NWJjMTlhMS4uMDFkZjQ3NzZlZGIzZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuQEAgLTM1LDggKzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ6bjFfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5pbmRleCAxZDdmMGE1N2QyODg5Ny4uNmQ0YmMxZmU4Zjc1MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuQEAgLTUzOSw4ICs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbitcdFx0cmV0dXJuO1xuK1xuK1x0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5pbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuLVx0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuK1x0aW50IHJldDtcbitcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbitcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2aWNlLCByZXQsIFwiTm8geFBDUyBmb3VuZFxcblwiKTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgKzQ0MiwxMCBAQCB2b2lkIHN0bW1hY19wY3NfY2xlYW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuLVx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rXHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGFkLi4zMjg2YmM5M2U3MDI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuQEAgLTEyLDYgKzEyLDI4IEBAIGNvbmZpZyBQQ1NfWFBDU1xuIFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGRyaXZlciBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgU3lub3BzeXNcbiBcdCAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLlxuIFxuK2lmIFBDU19YUENTXG4rXG4rY29uZmlnIFBDU19YUENTX1BMQVRGT1JNXG4rXHR0cmlzdGF0ZSBcIkdlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcIlxuK1x0ZGVmYXVsdCBQQ1NfWFBDU1xuK1x0aGVscFxuK1x0ICBHZW5lcmljIERXWFBDUyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XG4rXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cbitcdCAgZGF0YSBmb3Igc2V0dXAuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4rXG4rY29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4rXHR0cmlzdGF0ZSBcIlJvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCJcbitcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbitcdGhlbHBcbitcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbitcbitlbmRpZiAjIFBDU19YUENTXG4rXG4gY29uZmlnIFBDU19MWU5YXG4gXHR0cmlzdGF0ZVxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuaW5kZXggNGY3OTIwNjE4YjkwMDUuLmM4MDliN2Y5NDJhNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbkBAIC0xLDEwICsxLDkgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcbiBcbi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUylcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXG4tXHRcdFx0XHQgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4tXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQrPSBwY3NfeHBjcy5vXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cbitvYmotJChDT05GSUdfUENTX1hQQ1NfUExBVEZPUk0pICs9IHBjcy14cGNzLXBsYXQub1xuK29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJUCkgKz0gcGNzLXhwY3Mtcmsub1xuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcdFx0Kz0gcGNzLWx5bngub1xuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVx0Kz0gcGNzLW10ay1seW54aS5vXG4gb2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQrPSBwY3MtcnpuMS1taWljLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVkOTY5YTM4ZDU0NGQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuQEAgLTAsMCArMSw1MjYgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qXG4rICogUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXG4rICpcbisgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cbisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgU2VyZ2UgU2VtaW5cbisgKlxuKyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBDb2lhIFByYW50XG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zaXplcy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJwY3MteHBjcy5oXCJcbitcbitzdHJ1Y3QgZHdfeHBjc19yayB7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cztcbitcdHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7XG4rXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuK1x0c3RydWN0IGNsayAqY3NyX2NsaztcbitcdHN0cnVjdCBjbGsgKmVlZV9jbGs7XG4rfTtcbitcbitzdGF0aWMgcHRyZGlmZl90IHhwY3NfcmtfYWRkcl9mb3JtYXQoaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0cHRyZGlmZl90IGNzcjtcbitcdGludCByZXQ7XG4rXG4rXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcbitcbitcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHJlYWRsKHB4cGNzLVx1MDAzZXJlZ19iYXNlICsgKGNzciBcdTAwM2NcdTAwM2MgMikpIFx1MDAyNiAweGZmZmY7XG4rXG4rXHRwbV9ydW50aW1lX3B1dChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRwdHJkaWZmX3QgY3NyO1xuK1x0aW50IHJldDtcbitcbitcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0d3JpdGVsKHZhbCwgcHhwY3MtXHUwMDNlcmVnX2Jhc2UgKyAoY3NyIFx1MDAzY1x1MDAzYyAyKSk7XG4rXG4rXHRwbV9ydW50aW1lX3B1dChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVx0MlxuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTJcdDNcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkzXHQ0XG4rI2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXHQ2XG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJXHQ3XG4rXG4rc3RhdGljIGJvb2wgeHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoaW50IGFkZHIpXG4re1xuK1x0cmV0dXJuICEoYWRkciBcdTAwM2MgMCB8fCBhZGRyIFx1MDAzZSAzKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3dpdGNoIChkZXYpIHtcbitcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbitcdGNhc2UgTURJT19NTURfVkVORDI6XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTlhJTztcbitcdH1cbitcbitcdHN3aXRjaCAoYWRkcikge1xuK1x0Y2FzZSAwOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbitcdGNhc2UgMTpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xuK1x0Y2FzZSAyOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4rXHRjYXNlIDM6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3dpdGNoIChkZXYpIHtcbitcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbitcdGNhc2UgTURJT19NTURfVkVORDI6XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTlhJTztcbitcdH1cbitcbitcdC8qIFdyaXRhYmxlIG9ubHkgb24gTUlJICovXG4rXHRzd2l0Y2ggKHJlZykge1xuK1x0Y2FzZSBEV19WUl9NSUlfQU5fQ1RSTDpcbitcdGNhc2UgRFdfVlJfTUlJX0FOX0lOVFJfU1RTOlxuK1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbitcdGNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDE6XG4rXHRjYXNlIERXX1ZSX01JSV9ESUdfQ1RSTDI6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuK1x0ZGVmYXVsdDpcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rXHRzd2l0Y2ggKGFkZHIpIHtcbitcdGNhc2UgMDpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XG4rXHRjYXNlIDE6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbitcdGNhc2UgMjpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuK1x0Y2FzZSAzOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0aW50IGRldjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuK1x0aWYgKGRldiBcdTAwM2MgMClcbitcdFx0cmV0dXJuIDB4ZmZmZjtcbitcbitcdHJldHVybiB4cGNzX3JrX3JlYWRfcmVnKHB4cGNzLCBkZXYsIHJlZyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXHRpbnQgZGV2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuK1x0aWYgKGRldiBcdTAwM2MgMClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMHhmZmZmO1xuK1xuK1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgZHdfeHBjc19yayAqeHBjc19ya19jcmVhdGVfZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbitcbitcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXB4cGNzKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHB4cGNzLVx1MDAzZXBkZXYgPSBwZGV2O1xuK1xuK1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4rXG4rXHRyZXR1cm4gcHhwY3M7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X2luaXQoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1xuK1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwic2VyZGVzXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpLFxuK1x0XHRcdFx0XHRcIkZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwiKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXG4rXHRwaHlfcG93ZXJfb2ZmKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuK1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXG4rXHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCB0cnVlKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfaW5pdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxcblwiKTtcbitcdFx0Z290byBwbV9kb21haW47XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfcG93ZXJfb24ocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXFxuXCIpO1xuK1x0XHRnb3RvIHNlcmRlc19waHk7XG4rXHR9XG4rXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXFxuXCIsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbitcbitzZXJkZXNfcGh5OlxuK1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rcG1fZG9tYWluOlxuK1x0ZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBweHBjcy1cdTAwM2VwZGV2O1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4rXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbitcbitcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XG4rXHRpZiAoIXJlcykge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJObyByZWctc3BhY2UgZm91bmRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0aWYgKHJlc291cmNlX3NpemUocmVzKSBcdTAwM2MgU1pfMk0pIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiSW52YWxpZCByZWctc3BhY2Ugc2l6ZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxcblwiKTtcbitcdFx0cmV0dXJuIFBUUl9FUlIocHhwY3MtXHUwMDNlcmVnX2Jhc2UpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3NfcmtfZXhpdF9jbGsodm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuK1xuK1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0aW50IHJldDtcbitcbitcdHB4cGNzLVx1MDAzZWNzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcImNzclwiKTtcbitcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlY3NyX2NsaykpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSxcbitcdFx0XHRcdFx0IFwiRmFpbGVkIHRvIGdldCBDU1IgY2xvY2tcXG5cIik7XG4rXG4rXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcbitcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cHhwY3MtXHUwMDNlZWVlX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwiZWVlXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VlZWVfY2xrKSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspLFxuK1x0XHRcdFx0XHQgXCJGYWlsZWQgdG8gZ2V0IEVFRSBjbG9ja1xcblwiKTtcbitcbitcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2VlZWVfY2xrKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGVuYWJsZSBFRUUgY2xvY2tcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX2V4aXRfY2xrLCBweHBjcyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxuXCIsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcdHN0YXRpYyBhdG9taWNfdCBpZCA9IEFUT01JQ19JTklUKC0xKTtcbitcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4rXHRpbnQgcmV0O1xuK1xuK1x0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcbitcdGlmICghYnVzKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdGJ1cy1cdTAwM2VuYW1lID0gXCJSb2NrY2hpcCBEVyBYUENTIE1DSS9BUEIzXCI7XG4rXHRidXMtXHUwMDNlcmVhZCA9IHhwY3NfcmtfcmVhZF9jMjI7XG4rXHRidXMtXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcbitcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XG4rXHRidXMtXHUwMDNld3JpdGVfYzQ1ID0geHBjc19ya193cml0ZV9jNDU7XG4rXHRidXMtXHUwMDNlcGh5X21hc2sgPSB+MDtcbitcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4rXHRidXMtXHUwMDNlcHJpdiA9IHB4cGNzO1xuK1xuK1x0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsXG4rXHRcdCBcInJvY2tjaGlwX2R3eHBjcy0leFwiLCBhdG9taWNfaW5jX3JldHVybihcdTAwMjZpZCkpO1xuK1xuK1x0LypcbitcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XG4rXHQgKiB0aGUgTURJTyBhbmQgTUNJL0FQQjMgSU8gaW50ZXJmYWNlcyB1dGlsaXplZCBmb3IgdGhlIFJvY2tjaGlwIERXWFBDUyBDU1JzXG4rXHQgKiBhY2Nlc3MuXG4rXHQgKi9cbitcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBjcmVhdGUgTURJTyBidXNcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VidXMgPSBidXM7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1x0aW50IHJldDtcbitcbitcdHB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTtcbitcdGlmIChJU19FUlIocHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XG4rXG4rXHQvKlxuK1x0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXG4rXHQgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGxcbitcdCAqIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydCAoU0Vycm9yKS5cbitcdCAqXG4rXHQgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsXG4rXHQgKiB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSBzb2Z0IHJlc2V0LlxuK1x0ICovXG4rXHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24ocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9idXMocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuK3tcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbitcdHN0cnVjdCBkd194cGNzICp4cGNzO1xuK1x0dTMyIHBvcnQ7XG4rXG4rXHRpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUobnApKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbitcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCJyZWdcIiwgXHUwMDI2cG9ydCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXG4rXHRwY3NfbnAgPSBvZl9nZXRfcGFyZW50KG5wKTtcbitcdGlmICghcGNzX25wKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbitcbitcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwY3NfbnApKSB7XG4rXHRcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1x0fVxuK1xuK1x0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcbitcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4rXHRpZiAoIXBkZXYpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuK1xuK1x0cHhwY3MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbitcdGlmICghcHhwY3MgfHwgIXB4cGNzLVx1MDAzZWJ1cykge1xuK1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXHR9XG4rXG4rXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cdTAwM2VidXMsIChpbnQpcG9ydCk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKSB7XG4rXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRyZXR1cm4geHBjcztcbitcdH1cbitcbitcdGRldmljZV9saW5rX2FkZChkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpO1xuK1x0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4geHBjcztcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpO1xuK1xuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuK1xuK1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWNzcl9jbGspO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4rXG4rXHRyZXR1cm4gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWNzcl9jbGspO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgeHBjc19ya19wbV9vcHMgPSB7XG4rXHRTRVRfUlVOVElNRV9QTV9PUFMoeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZSxcbitcdFx0XHQgICBOVUxMKVxuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC14cGNzXCIgfSxcbitcdHsgLyogc2VudGluZWwgKi8gfSxcbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcbitcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicmtfeHBjcy1kd3hwY3NcIixcbitcdFx0LnBtID0gXHUwMDI2eHBjc19ya19wbV9vcHMsXG4rXHRcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxuK1x0fSxcbit9O1xuK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoeHBjc19ya19kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIlJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw2ICs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xuK1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbiBcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbkBAIC04ODQsNyArODg5LDcgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXgoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKSB7XG4gXHRcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxuLVx0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xuK1x0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xMDU4LDYgKzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcbiBcdC8qIFJlc2V0IGxpbmtfc3RhdGUgKi9cbiBcdHN0YXRlLVx1MDAzZWxpbmsgPSBmYWxzZTtcbitcdHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID0gZmFsc2U7XG4gXHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4gXHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdHN0YXRlLVx1MDAzZXBhdXNlID0gMDtcbkBAIC0xMDY5LDYgKzEwNzUsOCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IHJldCBcdTAwMjYgRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSO1xuK1xuIFx0aWYgKHJldCBcdTAwMjYgRFdfVlJfTUlJX0MzN19BTlNHTV9TUF9MTktTVFMpIHtcbiBcdFx0aW50IHNwZWVkX3ZhbHVlO1xuIFxuQEAgLTEwODYsNyArMTA5NCwyNCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdFx0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiBcdFx0ZWxzZVxuIFx0XHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xuLVx0fSBlbHNlIGlmIChyZXQgPT0gRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSKSB7XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuK1x0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuK1x0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuK1xuK1x0aWYgKHhwY3MtXHUwMDNlaW5mby5wbWEgIT0gV1hfVFhHQkVfWFBDU19QTUFfMTBHX0lEKSB7XG4rXHRcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xuK1x0XHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4rXHRcdFx0eHBjc19tb2RpZnkoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLCBCTUNSX0FOUkVTVEFSVCxcbitcdFx0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0aWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcbiBcdFx0aW50IHNwZWVkLCBkdXBsZXg7XG4gXG4gXHRcdHN0YXRlLVx1MDAzZWxpbmsgPSB0cnVlO1xuQEAgLTExMTIsNyArMTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRlbHNlIGlmIChkdXBsZXggXHUwMDI2IEFEVkVSVElTRV8xMDAwWEhBTEYpXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4gXG4tXHRcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XG4rXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuaW5kZXggMmIwZjE1MmY1NDcwOTEuLmZmMjkwYmMxODU4OWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbisrKyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5AQCAtMTg2LDYgKzE4Niw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyB7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV94cGNzX3BoeV9yZWFkeTtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMV9zZWw7XG4rXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xuIH07XG5AQCAtMjEyLDYgKzIxMyw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYge1xuIFx0Ym9vbCBlbmFibGVfc3NjO1xuIFx0Ym9vbCBleHRfcmVmY2xrO1xuIFx0c3RydWN0IGNsayAqcmVmY2xrO1xuK1x0dTMyIHNnbWlpX21hY19zZWw7XG4gfTtcbiBcbiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdixcbkBAIC0zNzUsNiArMzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlcbiBcbiBcdHByaXYtXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXCJyb2NrY2hpcCxleHQtcmVmY2xrXCIpO1xuIFxuK1x0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsID0gMDtcbitcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwicm9ja2NoaXAsc2dtaWktbWFjLXNlbFwiLCBcdTAwMjZwcml2LVx1MDAzZXNnbWlpX21hY19zZWwpO1xuK1xuIFx0cHJpdi1cdTAwM2VwaHlfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBcInBoeVwiKTtcbiBcdC8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi9cbiBcdGlmIChQVFJfRVJSKHByaXYtXHUwMDNlcGh5X3JzdCkgPT0gLUVOT0VOVClcbkBAIC04NzMsNiArODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxuK1x0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGlwZV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3NnbWlpX21hY19zZWwsXG4rXHRcdFx0XHRcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCBcdTAwM2UgMCk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfeHBjc19waHlfcmVhZHksIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfcGh5bW9kZV9zZWwsIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7XG5AQCAtOTg0LDYgKzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcbiBcdC5jb24zX2Zvcl9zYXRhXHRcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcbiBcdC8qIHBpcGUtZ3JmICovXG4gXHQucGlwZV9jb24wX2Zvcl9zYXRhXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXG4rXHQucGlwZV9zZ21paV9tYWNfc2VsXHQ9IHsgMHgwMDQwLCAxLCAxLCAweDAwLCAweDAxIH0sXG4gXHQucGlwZV94cGNzX3BoeV9yZWFkeVx0PSB7IDB4MDA0MCwgMiwgMiwgMHgwMCwgMHgwMSB9LFxuIFx0LnUzb3RnMF9wb3J0X2VuXHRcdD0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxuIFx0LnUzb3RnMV9wb3J0X2VuXHRcdD0geyAweDAxNDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmggYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NlXG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG5AQCAtMCwwICsxLDExIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSFxuKyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLmhcdTAwM2VcbitcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbitcbisjZW5kaWYgLyogX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOS4xMDk5MjQxMzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM4NzgyNjcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBTZXJpZXMgQW5hbHlzaXMgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTIChYUENTKS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMsIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuRmlyc3RseSwgdGhlIFJvY2tjaGlwLXNwZWNpZmljIGRyaXZlciwgYHBjcy14cGNzLXJrLmNgLCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhlc2UgYXJlIGEgcGFpbiBpbiB0aGUgbmVjayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSBiZWNhdXNlIHRoZXkgdXN1YWxseSByZWx5IGhlYXZpbHkgb24gdGhlIERldmljZSBUcmVlLiBVbmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgc3l6a2FsbGVyLXNwZWNpZmljIHBzZXVkby1kZXZpY2UsIG9yIHRoZSBkZXZpY2UgdHJlZSBpcyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hpY2ggaXMgdW5saWtlbHkgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LCBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCB0aGlzIGRyaXZlci4gU3l6a2FsbGVyICpjb3VsZCogdHJ5IHRvIGluamVjdCB0aGUgcGxhdGZvcm0gZGV2aWNlIHdpdGggYHN5el9kZXZfaW5pdGAgb3IgbW9kaWZ5IHRoZSBEVCBpZiBzdXBwb3J0ZWQsIGJ1dCB0eXBpY2FsbHksIHN5emthbGxlciBwcmVmZXJzIHNpbXBsZXIsIG1vcmUgZGlyZWN0IGFwcHJvYWNoZXMgZm9yIG5ldHdvcmsgZHJpdmVycyBsaWtlIHZpcnR1YWwgaW50ZXJmYWNlcy4gSW4gdGhpcyBjYXNlLCBgcGNzLXhwY3MtcmsuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggYSBjb21wYXRpYmxlIHN0cmluZywgYW5kIGl0cyBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbiB0aGF0IGluY2x1ZGVzIGdldHRpbmcgYSBcInNlcmRlc1wiIHBoeSBhbmQgcmVzb3VyY2VzLiBXaXRob3V0IHRoZSByaWdodCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IGZhaWwuIFRoZSBkZXZpY2UgdHJlZSB3aWxsIG5lZWQgdG8gZXhpc3QgYW5kIGhhdmUgdGhlIGNvcnJlY3QgZW50cmllcyBmb3IgdGhlIHBsYXRmb3JtIGRyaXZlciB0byBzdWNjZWVkLCB3aGljaCBpcyB1bmxpa2VseSBpbiBtb3N0IHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9ucy5cblxuU2Vjb25kbHksIGFuZCBtb3JlIGludGVyZXN0aW5nbHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFRoaXMgaXMgYSBnZW5lcmljIGRyaXZlciwgc28gaXQgY291bGQgaGF2ZSBnb29kIHBvdGVudGlhbCBmb3IgZnV6emluZy4gVGhlcmUgaXMgYSByZWZhY3RvcmluZyBoYXBwZW5pbmcgd2hlcmUgYHN0bW1hY19wY3Nfc2V0dXBgIGlzIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhpcyBhZmZlY3RzIGhvdyBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGBzdG1tYWNgIGRyaXZlci4gVGhlIHBhdGNoIGRlbGVnYXRlcyB0aGUgaW5pdGlhbGl6YXRpb24gdG8gYHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdGAuXG5cblRoZSBgc3RtbWFjYCBjaGFuZ2VzIGxlYWQgdG8gdGhlIGBkd21hYy1pbnRlbC5jYCBmaWxlIGdldHRpbmcgbW9kaWZpZWQuIFRoaXMgZmlsZSBpcyBmb3IgSW50ZWwgUENJIGRldmljZXMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBiZWNhdXNlIHN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMhIElmIHRoZSBJbnRlbCBkcml2ZXIgaXMgZW5hYmxlZCwgYW5kIHN5emthbGxlciBjYW4gaW5qZWN0IGEgc3VpdGFibGUgSW50ZWwgUENJIGRldmljZSwgd2UncmUgaW4gYnVzaW5lc3MuIFdlJ2xsIGJlIGFibGUgdG8gcHJvYmUgYGludGVsX21nYmVfcGNzX2luaXRgIGFuZCBmcm9tIHRoZXJlIHRoZSBgc3RtbWFjX3Bjc19zZXR1cGAgZnVuY3Rpb25zLiBUaGlzIHdvdWxkIG1lYW4gcmVhY2hpbmcgYHhwY3NfY3JlYXRlX21kaW9kZXZgLiBUaGUgUENJIGRldmljZSBlbXVsYXRpb24vaW5qZWN0aW9uIGlzIGltcG9ydGFudCBoZXJlLlxuXG5UaGVyZSdzIHNvbWUgZnVuY3Rpb25hbCBsb2dpYyBhcyB3ZWxsLiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgcGNzLXhwY3MuY2AsIHNwZWNpZmljYWxseSBmdW5jdGlvbnMgbGlrZSBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYW5kIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgLiBUaGVzZSBhcmUgZ2VuZXJpYyBQQ1MgZHJpdmVyIGZ1bmN0aW9ucyBhbmQsIHNpbmNlIEludGVsIG1HQkUgdXNlcyBTR01JSSBvciAxMDAwQkFTRVgsIHRoZXNlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdGhyb3VnaCB0aGUgSW50ZWwgbUdCRSBkcml2ZXIsIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGNvcnJlY3RseSBhbmQgU0dNSUkgb3IgMTAwMEJBU0VYIG1vZGVzIGFyZSBhY3RpdmUuIFRoZXNlIG1vZGlmaWNhdGlvbnMgaW4gYHBjcy14cGNzLmNgIHNob3VsZCBiZSB0aGUgbWFpbiBhcmVhIG9mIGZvY3VzLiBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IGJ5IHBoeWxpbmssIHNvIHRoZXkgd2lsbCBiZSBleGVyY2lzZWQgZHVyaW5nIGRldmljZSBvcGVyYXRpb24uXG5cblNvLCB0aGUga2V5IGhlcmUgaXMgUENJIGZ1enppbmcsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIEludGVsIG1HQkUgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApLiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBvciBlbXVsYXRlIGFuIEludGVsIFBDSSBkZXZpY2UsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIHJpZ2h0LCB3ZSBjYW4gZXhlcmNpc2UgdGhvc2UgZ2VuZXJpYyBgcGNzLXhwY3MuY2AgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byBiZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBzZXQsIGJ1dCBpdCBsb29rcyBsaWtlIHdlIHdpbGwgbmVlZDpcblxuKiAgIGBDT05GSUdfU1RNTUFDX0VUSGBcbiogICBgQ09ORklHX0RXTUFDX0lOVEVMYFxuKiAgIGBDT05GSUdfUENTX1hQQ1NgXG4qICAgYENPTkZJR19QQ0lgXG5cbkl0IGxvb2tzIGxpa2UgdGhlIGBEV01BQ19JTlRFTGAgY29uZmlnIHNlbGVjdHMgYFBDU19YUENTYC4gTGV0J3MgZ2V0IHRvIHdvcmsgd2l0aCB0ZXN0aW5nIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwOTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MDcuNDk3NzU0NDc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MzgyNTU2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9NzIxPXN0YXRpYyB2b2lkIHhwY3NfcHJlX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTc0OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzo3NTA6c3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy03NTEtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9OTE2PXN0YXRpYyBpbnQgeHBjc19kb19jb25maWcoc3RydWN0IGR3X3hwY3MgKnhwY3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDctXFx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6OTQ4OlxcdFxcdHJldCA9IHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpKHhwY3MsIG5lZ19tb2RlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDktXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MTEuMjM2MDE1OTI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjUyNjg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBicmVhZGNydW1iIHRyYWlsIHN0YXJ0cyB3aXRoIGB4cGNzX2RvX2NvbmZpZ2AuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKndpdGhpbiogdGhhdCBjYWxsLlxuXG5NeSBuZXh0IHN0b3AgaXMgY2xlYXJseSBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYC4gVGhpcyBsb29rcyBsaWtlIHdoZXJlIHdlJ3JlIGRpZ2dpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3RhdGUgcmVsYXRlZCB0byBTR01JSSDigJMgYSBwYXJ0aWN1bGFyIHR5cGUgb2Ygc2lnbmFsaW5nIGludGVyZmFjZSwgbW9zdCBsaWtlbHksIGJhc2VkIG9uIHRoZSBuYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSdyZSBwdWxsaW5nIHRoYXQgc3RhdGUsIGZyb20gd2hlcmUsIGFuZCBob3cgaXQgaW5mb3JtcyB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gSXMgaXQgcHVsbGluZyBmcm9tIHJlZ2lzdGVycywgbWVtb3J5LCBhIGNvbmZpZyBmaWxlPyBJcyBpdCBjaGVja2luZyBmb3IgZXJyb3JzPyBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWVzIGFuZCBhbnkgc3RhdGUgdmFyaWFibGVzIHVzZWQgYXMgYSByZXN1bHQgb2YgdGhhdCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlLiBMZXQncyBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MTQuNjY4NTQ2NTAzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDM0MjE0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTk4Nj1zdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2M3MyhzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEwNTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTA1OTpzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMDYwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTEyMDQ9c3RhdGljIHZvaWQgeHBjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjUtXFx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTIyNjpcXHRcXHRyZXQgPSB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoeHBjcywgc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjctXFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMjI4LVxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnhwY3MtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIiVzIHJldHVybmVkICVwZVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI5OlxcdFxcdFxcdFxcdFxcXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcXFwiLCBFUlJfUFRSKHJldCkpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMzAtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjE3LjUxMTk3NTkzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzczOTgzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBDUyBTdGF0ZSBSZXRyaWV2YWwqKlxuXG5SaWdodCwgc28gdGhpcyBpcyBjb21pbmcgZnJvbSBhIGNhbGwgdG8gYHhwY3NfZ2V0X3N0YXRlYC4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc3RhdGUgY2hlY2suICpUaGF0KiBzcGVjaWZpYyBmdW5jdGlvbiBjYWxsIGlzIHRoZSByb290IG9mIHRoZSBpc3N1ZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzLCB3aGVyZSBkb2VzIHRoaXMgZ2V0IGNhbGxlZCBmcm9tIGFuZCB3aGF0IGlzIGhhcHBlbmluZyBhcm91bmQgaXQ/IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGF0IGlzIGluaXRpYWxpemluZyB0aGUgUENTIHRvIGJlZ2luIHdpdGguXG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBgaW50ZWxfbWdiZV9wY3NfaW5pdGAgZnVuY3Rpb24uIElzIGl0IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIFBDUyBzdGF0ZSBvciwgaXMgaXQgY2FsbGVkIGJlZm9yZSBgeHBjc19nZXRfc3RhdGVgPyBJcyB0aGVyZSBzb21lIGZvcm0gb2YgcmFjZSBjb25kaXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuICp0aGVzZSogdHdvIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU2NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjIwLjI4OTM3NjgwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYzNTg1NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX21nYmVfcGNzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01NjU9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU3NTpzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NjE5PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzM4LVxcdFxcdHBsYXQtXFx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjczOTpcXHRcXHRwbGF0LVxcdTAwM2VwY3NfaW5pdCA9IGludGVsX21nYmVfcGNzX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NDAtXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MzoyMi42NTI5NzE1ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ0Nzg4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBQQ1MgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBgcGxhdC1cdTAwM2VwY3NfaW5pdGAsIGFuZCBJIGNhbiBzZWUgaXQncyBjYWxsZWQgZnJvbSBgc3RtbWFjX3Bjc19zZXR1cGAuIFRoYXQgY29uZmlybXMgdGhlIGFzc2lnbm1lbnQgYW5kIHRoZSBjYWxsIHN0YWNrOyBzbyBmYXIsIHNvIGdvb2QuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBjYWxsLCBzZWUgKmhvdyogaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbi4gR290dGEgZmlndXJlIG91dCB3aGF0IGtpbmQgb2Ygc2V0dXAgaXQncyBwZXJmb3JtaW5nLCB3aGF0IHBhcmFtZXRlcnMgbWF0dGVyLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjdXN0b21pemF0aW9uIHBvaW50cyBtaWdodCBiZS4gS25vd2luZyAqaG93KiBpdCdzIGFsbCBwdXQgdG9nZXRoZXIgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBpbXBsaWNhdGlvbnMgb2YgdGhlIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzEyNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjI1Ljc5Nzc2NDMxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMDcwNjgzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNzX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwMT12b2lkIHN0bW1hY19tZGlvX3VubG9jayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwMjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDAzLXZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3OTc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA0NjpcXHRyZXQgPSBzdG1tYWNfcGNzX3NldHVwKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA0Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz0zODE9aW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjQyNjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjI4LjIxODQ3NzE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njg3NjU0NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0cyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgSW50ZWwgbUdCRSBEZXZpY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFsbCB0cmlnZ2VyZWQgZnJvbSBgX19zdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHJlbGV2YW50IGNvZGUgY2hhbmdlcyBpbiBgcGNzLXhwY3MuY2AsIGBzdG1tYWNfbWRpby5jYCwgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZyBvZiB0aGUgSW50ZWwgbUdCRSBkZXZpY2UuIFRoZSBSb2NrY2hpcC1zcGVjaWZpYyBjaGFuZ2VzIGluIGBwY3MteHBjcy1yay5jYCBhbmQgYGR3bWFjLXJrLmNgIGFyZSBsZXNzIG9mIGEgcHJpb3JpdHkgZm9yIGEgZ2VuZXJpYyBmdXp6aW5nIGVudmlyb25tZW50LCBidXQgaXQgZG9lc24ndCBodXJ0IHRvIGtlZXAgYW4gZXllIG9uIHRoZW0uXG5cbkxldCdzIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQ6IGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhgLCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCwgYGludGVsX21nYmVfcGNzX2luaXRgLCBhbmQgYHN0bW1hY19wY3Nfc2V0dXBgLiBSaWdodCwgYHN0bW1hY19wY3Nfc2V0dXBgIGFuZCBgaW50ZWxfbWdiZV9wY3NfaW5pdGAgYXJlIGJvdGggY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUuIEJ1dCBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgIGFuZCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBhcmUgdHJpZ2dlcmVkIGJ5IHBoeWxpbmssIHdoaWNoIGlzIHRoZW4gdHJpZ2dlcmVkIGJ5IG5ldGxpbmssIGxpa2UgYW4gYGlwIGxpbmsgc2V0IHVwYCBjb21tYW5kLiBUaG9zZSBwaHlsaW5rIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMsIGVzcGVjaWFsbHkgc2luY2UgdGhleSdyZSB1c2VyLXNwYWNlIGNvbnRyb2xsYWJsZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSBuZWVkOiBgRFdNQUNfSU5URUxgLCBgU1RNTUFDX0VUSGAsIGBQQ1NfWFBDU2AsIGFuZCBgUENJYC4gSGFuZyBvbi4uLiBgUENTX1hQQ1NgIGlzIGEgdHJpc3RhdGUsIGFuZCBpdCdzIHNlbGVjdGVkIGJ5IGBEV01BQ19JTlRFTGAuIE9rYXksIHJlYWRpbmcgdGhlIHBhdGNoLi4uIGBQQ1NfWFBDU19QTEFURk9STWAgaXMgdGhlIGdlbmVyaWMgZHJpdmVyLiBBaCwgZ290IGl0LiBgcGNzLXhwY3MuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BDU19YUENTYCBpcyBlbmFibGVkLiBPa2F5LCBsb29raW5nIGF0IHRoZSBtYWtlZmlsZSwgc28gYHBjcy14cGNzLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19QQ1NfWFBDU2AgaXMgZW5hYmxlZC4gYENPTkZJR19EV01BQ19JTlRFTGAgc2VsZWN0cyBgUENTX1hQQ1NgLiBTbywgaXQgbG9va3MgbGlrZSBgRFdNQUNfSU5URUxgIGFuZCBgU1RNTUFDX0VUSGAgYXJlIHRoZSBjb3JlIHJlcXVpcmVtZW50cy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgRFdNQUNfUk9DS0NISVBgIHNlbGVjdHMgYFBDU19YUENTX1JPQ0tDSElQYC4gV2UgbWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCB0b28sIGp1c3QgaW4gY2FzZSwgYnV0IHRoZXkncmUgZGVwZW5kZW50IG9uIGBBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVGAuIFNpbmNlIHdlIHdhbnQgdG8gZm9jdXMgb24gdGhlIGdlbmVyaWMgcGFydHMsIGBEV01BQ19JTlRFTGAgaXMgdGhlIG1vc3QgaW1wb3J0YW50LlxuXG5BbHJpZ2h0LCBmaW5hbCB2ZXJpZmljYXRpb246IFdlIG5lZWQgYFNUTU1BQ19FVEhgLCBgRFdNQUNfSU5URUxgLCBhbmQgYFBDU19YUENTYC4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IGBEV01BQ19JTlRFTGAgaXMgc3VmZmljaWVudCwgYnV0IGxldCdzIHRlc3QgaXQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MzozNy45MDYxMzQ4MzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzA4MTExNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0lOVEVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIzPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzQ9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc5OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzgwLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjQwLjIzNjk1NDc3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc0MTA3MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipRdWljayBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgcmlnaHQsIHNvIGBEV01BQ19JTlRFTGAuLi50aGF0J3MgdGhlIGtleSwgdGhhdCdzIHdoYXQncyBkcml2aW5nIHRoZSBjb25uZWN0aW9uIG92ZXIgdG8gYGR3bWFjLWludGVsLmNgLiBNYWtlcyBzZW5zZSwgYWxpZ25zIHdpdGggdGhlIHVzdWFsIEludGVsLXNwZWNpZmljIGRlc2NyaXB0b3IuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUsIG5lZWQgdG8gYWxzbyBjb25maXJtIHRoZSBzdGF0ZSBvZiBgUENTX1hQQ1NgLiBHb3QgdG8gY3Jvc3MtcmVmZXJlbmNlIG15IHVuZGVyc3RhbmRpbmcgb24gdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTU4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NDMuMDExMDYzOTAzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA1NzE1NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ1NfWFBDU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZz02PW1lbnUgXFxcIlBDUyBkZXZpY2UgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjg6Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MTU9aWYgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxNzpjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI2LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI3OmNvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NDUuNTE2ODE1MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1NTUwNTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgQ29uZmlndXJhdGlvbiBTcGFjZSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBhbmQgdGhlIGxhYmVsIGBQQ1NfWFBDU2AganVzdCBjbGlja2VkLiBJIGtub3cgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBzeXN0ZW0gc2V0dXAsIHNvIGxldCdzIHN0YXJ0IHdpdGggdGhhdCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgdXNlZCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYERXTUFDX1JPQ0tDSElQYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgc29mdHdhcmUsIGFuZCBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIGRldmljZSBvcGVyYXRlcy4gRnJvbSB0aGVyZSwgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NDgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0Mzo0OC4yNzIzMjQzMDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTU2MDE1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX1JPQ0tDSElQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTU1PWNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE2ODpjb25maWcgRFdNQUNfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgZHdtYWMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NTAuNjY3OTQyOTgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMjA0MTY1MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYWRkaW5nIFJvY2tjaGlwIFJLMzU2OCBYUENTIHN1cHBvcnQsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UgY2FuIGluY2x1ZGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCBpbiB0aGUgY29uZmlncywgYnV0IHRoZXkgbWlnaHQgbm90IGJlIHJlYWNoYWJsZS4gSW5jbHVkaW5nIHRoZW0gd29uJ3QgaHVydCwgc28gd2h5IG5vdC5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LiBXaGlsZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGl0c2VsZiwgYW5kIHRoZSBkaXJlY3QgYHJrX3Bjc19pbml0YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIHNlZW0gaGFyZCB0byB0cmlnZ2VyIHdpdGhvdXQgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgdGhlIGBzdG1tYWNgIGRyaXZlciBmb3IgUENTIGluaXRpYWxpemF0aW9uLCBhbmQgaW1wb3J0YW50bHksIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGBkd21hYy1pbnRlbC5jYCkgdXNlcyB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cgbm93LiBUaGlzIGlzIGtleS4gVGhlIGdlbmVyaWMgYHBjcy14cGNzYCBkcml2ZXIncyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzIGFyZSBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIG1lYW5zIHdlIGhhdmUgYSBjb3VwbGUgb2YgbW9yZSBnZW5lcmljIGNvZGUgcGF0aHMgdGhhdCBjb3VsZCBiZSBoaXQuXG5cblRoZXJlZm9yZSwgdGhlIGNoYW5nZXMgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBjaGFuZ2VzIHRvIHRoZSBJbnRlbCBQQ0kgZHJpdmVyLCBhcmUgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgbmV0bGluayBpbnRlcmZhY2UgbWFuaXB1bGF0aW9uLiBTbywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGZvciBmdXp6aW5nIGFyZSBnb2luZyB0byBiZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgdW5kZXJ3ZW50IGNvZGUgY2hhbmdlcy4gSSdsbCBpbmNsdWRlOiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBhbHNvIGFkZGVkIGBya19wY3NfaW5pdGAsIGB4cGNzX3JrX3Byb2JlYCBhbmQgYHhwY3NfcmtfY3JlYXRlYCB0byB0aGUgbGlzdC4gVGhleSBtYXkgYmUgcmVhY2hhYmxlIGFzIHdlbGwuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYHN0bW1hY19wY3Nfc2V0dXBgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRoYXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgc3RhdGljIGFuZCB0aGVyZWZvcmUgc3VpdGFibGUgYXMgZm9jdXMgc3ltYm9scy4gVGhleSBsb29rIGZpbmUuIEkgdGhlbiBkaWQgYSBkaWZmIGNoZWNrIG9uIGBwY3MteHBjcy5jYCB0byBjb25maXJtIHRoZSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSB0aGUgb25lcyBhY3R1YWxseSBjaGFuZ2VkIGJ5IHRoaXMgcGF0Y2guXG5cbk15IGluaXRpYWwgY29uZmlnIHNldHVwIHNlZW1zIHNvdW5kLiBJJ2xsIHVzZSBgU1RNTUFDX0VUSGAsIGBEV01BQ19JTlRFTGAsIGBQQ1NfWFBDU2AsIGBQQ1NfWFBDU19ST0NLQ0hJUGAsIGFuZCBgRFdNQUNfUk9DS0NISVBgIHRvIHRlc3QuIE9oLCBhbmQgSSBqdXN0IG5vdGljZWQgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLCBzbyBJJ2xsIGluY2x1ZGUgYFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQlBIWWAgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNjcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQ0OjAyLjg3MjExMTMwM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NDg2MjAwMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQlBIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDQ6MDUuNTY2OTg0NjY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzI2NjMyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY2AuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFzc3VtaW5nIHRoaXMgaXMgcmVsYXRlZCB0byBhIFJvY2tjaGlwIHN5c3RlbS1vbi1hLWNoaXAgKFNvQyksIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBhIGNvbWJpbmVkIFBIWSAocGh5c2ljYWwgbGF5ZXIpIGxpa2UgYSBVU0Igb3IgUENJZSBQSFkuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIGFuZCBwcm9iYWJseSBzb21lIGRldmljZSB0cmVlIGJpbmRpbmdzLCBhbmQgdGhlbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBkcml2ZXIuXG5cbkZpcnN0LCBJJ2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUgY29kZSBiYXNlLiBBIHF1aWNrIHNlYXJjaCBmb3IgdGhhdCBmaWxlbmFtZSBzaG91bGQgcG9pbnQgbWUgdG8gdGhlIGNvcnJlY3QgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSdsbCB0aGVuIGV4YW1pbmUgdGhlIGZpbGUgY29udGVudHMuIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgY29tYmluYXRpb24gb2YgZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgYW5kIGludGVycnVwdCBoYW5kbGVycywgcG9zc2libHkgdXNpbmcgYSBjb21tb24gUEhZIGZyYW1ld29yay4gVGhlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIHByZXNlbnQgZWl0aGVyIGRpcmVjdGx5IHdpdGhpbiB0aGF0IGRyaXZlciBmaWxlIG9yLCBtb3JlIGxpa2VseSwgbWFuYWdlZCB0aHJvdWdoIGRldmljZSB0cmVlIGJpbmRpbmdzLlxuXG5JZiBpdCdzIGRldmljZSB0cmVlIGJhc2VkLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgRFQgKERldmljZSBUcmVlKSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uLCB1c3VhbGx5IGZvdW5kIGluIGEgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9gIGRpcmVjdG9yeS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgZGV0YWlscyBvbiB0aGUgcHJvcGVydGllcyB0aGF0IHRoZSBEVCBub2RlIGZvciB0aGlzIFBIWSBleHBlY3RzLCBhbmQgaG93IHRoZXNlIHNldHRpbmdzIGFyZSBhcHBsaWVkLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzIChjbG9jayBmcmVxdWVuY2llcywgY2xvY2sgZG9tYWlucyksIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3MgKHZvbHRhZ2UgcmFpbHMsIHBvd2VyIGRvbWFpbnMpLCBhbnkgcmVxdWlyZWQgaW50ZXJydXB0IGxpbmVzLCBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgYWRkcmVzc2VzIG9yIG9mZnNldHMgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gaW5pdGlhbGl6ZSB0aGlzIHNwZWNpZmljIFBIWS4gVGhlIHNwZWNpZmljcyB3aWxsIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIG5hbmVuZy1jb21icGh5LiBJJ2xsIGFsc28gYmUgZXhhbWluaW5nIGhvdyB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCB0byB0aGUgb3RoZXIgY29tcG9uZW50cy5cblxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGVudGlyZSBkZXZpY2UgY29uZmlndXJhdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFBIWSBpcyBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCB3aXRoaW4gdGhlIGJyb2FkZXIgUm9ja2NoaXAgU29DIGNvbnRleHQsIHNvIHRoYXQgaWYgdGhlcmUgd2VyZSBhIG1hbGZ1bmN0aW9uLCBJIHdvdWxkIGtub3cgaG93IHRvIHRyb3VibGVzaG9vdCB0aGlzIGRldmljZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMDAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0NDowOS44Mzk2NDk2MDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTQzMTg3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5Lm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfUEhZX1JPQ0tDSElQX0lOTk9fVVNCMilcXHQrPSBwaHktcm9ja2NoaXAtaW5uby11c2IyLm9cXG5kcml2ZXJzL3BoeS9yb2NrY2hpcC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSlcXHQrPSBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkub1xcbmRyaXZlcnMvcGh5L3JvY2tjaGlwL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfUENJRSlcXHRcXHQrPSBwaHktcm9ja2NoaXAtcGNpZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQ0OjEyLjQ1Mzk3OTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0NzcyMDY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSzM1NjggWFBDUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEkgc2VlIGl0J3MgYWRkaW5nIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAgdG8gdGhlIGNvbmZpZ3MsIHNvIHRoYXQncyB0aGUgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYSBSb2NrY2hpcCBSSzM1NjggWFBDUyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBhZmZlY3RzIHRoZSBgcGNzLXhwY3NgLCBgc3RtbWFjYCwgYW5kIGBkd21hYy1pbnRlbGAgZHJpdmVycy5cblxuVGhlIHRyaWNreSBwYXJ0IGlzIHRoYXQgdGhlIHBsYXRmb3JtIGRyaXZlciBpdHNlbGYsIHRoZSBSb2NrY2hpcCBzcGVjaWZpYyBiaXQsIG1pZ2h0IGJlIGhhcmQgdG8gaGl0IGluIG15IHVzdWFsIHZpcnR1YWxpemVkIHNldHVwIHdpdGhvdXQgdmVyeSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLiBIb3dldmVyLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHNvbWUgKmdlbmVyaWMqIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIHJlZmFjdG9yaW5nIGluIHRoZSBgc3RtbWFjYCBpbml0aWFsaXphdGlvbiBmbG93IGlzIGludGVyZXN0aW5nLCBhbmQgdGhlIGNoYW5nZXMgdG8gdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoYGR3bWFjLWludGVsLmNgKSB0byB1c2UgdGhhdCBuZXcgaW5pdGlhbGl6YXRpb24gYXJlIGRlZmluaXRlbHkgaW4gc2NvcGUuIEkgY2FuIGdldCB0byB0aGVzZSwgcmVnYXJkbGVzcyBvZiBzcGVjaWZpYyBoYXJkd2FyZS4gQWRkaXRpb25hbGx5LCB0aGUgcGF0Y2ggYWx0ZXJzIHRoZSBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGluIHRoZSBnZW5lcmljIGBwY3MteHBjcy5jYCBkcml2ZXIgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRob3NlIGFyZSBhbHNvIHJlYWNoYWJsZS5cblxuR2l2ZW4gdGhlc2UgZ2VuZXJpYyBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZSByZWFjaGFiaWxpdHkgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIG1hbmlwdWxhdGlvbiwgSSdkIHNheSB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBnZXQgdGhpcyBhZGRlZCB0byB0aGUgY2FtcGFpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAzLCJPdXRwdXRUb2tlbnMiOjM1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0NDoxOS4zMDE3MDI5OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU5NjQwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCIsXG4gICAgXCJQQ1NfWFBDU1wiLFxuICAgIFwiUENTX1hQQ1NfUk9DS0NISVBcIixcbiAgICBcIkRXTUFDX1JPQ0tDSElQXCIsXG4gICAgXCJQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpXCIsXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhcIixcbiAgICBcInhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paVwiLFxuICAgIFwiaW50ZWxfbWdiZV9wY3NfaW5pdFwiLFxuICAgIFwic3RtbWFjX3Bjc19zZXR1cFwiLFxuICAgIFwicmtfcGNzX2luaXRcIixcbiAgICBcInhwY3NfcmtfcHJvYmVcIixcbiAgICBcInhwY3NfcmtfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJ3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCIsXG4gICAgXCJQQ1NfWFBDU1wiLFxuICAgIFwiUENTX1hQQ1NfUk9DS0NISVBcIixcbiAgICBcIkRXTUFDX1JPQ0tDSElQXCIsXG4gICAgXCJQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpXCIsXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhcIixcbiAgICBcInhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paVwiLFxuICAgIFwiaW50ZWxfbWdiZV9wY3NfaW5pdFwiLFxuICAgIFwic3RtbWFjX3Bjc19zZXR1cFwiLFxuICAgIFwicmtfcGNzX2luaXRcIixcbiAgICBcInhwY3NfcmtfcHJvYmVcIixcbiAgICBcInhwY3NfcmtfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJ3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workfloww7sp2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 05:17:24 +0000 UTC FinishedAt: 2026-07-15 05:44:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL", "PCS_XPCS", "PCS_XPCS_ROCKCHIP", "DWMAC_ROCKCHIP", "PHY_ROCKCHIP_NANENG_COMBO_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL", "PCS_XPCS", "PCS_XPCS_ROCKCHIP", "DWMAC_ROCKCHIP", "PHY_ROCKCHIP_NANENG_COMBO_PHY" ], "series_id": "ca0a0a0e-66d1-494e-93b2-e0a162d22b20" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xpcs_config_aneg_c37_sgmii", "xpcs_config_aneg_c37_1000basex", "xpcs_get_state_c37_sgmii", "intel_mgbe_pcs_init", "stmmac_pcs_setup", "rk_pcs_init", "xpcs_rk_probe", "xpcs_rk_create" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfSU5URUwmIzM0OywKICAgICYjMzQ7UENTX1hQQ1MmIzM0OywKICAgICYjMzQ7UENTX1hQQ1NfUk9DS0NISVAmIzM0OywKICAgICYjMzQ7RFdNQUNfUk9DS0NISVAmIzM0OywKICAgICYjMzQ7UEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paSYjMzQ7LAogICAgJiMzNDt4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXgmIzM0OywKICAgICYjMzQ7eHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O2ludGVsX21nYmVfcGNzX2luaXQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjc19zZXR1cCYjMzQ7LAogICAgJiMzNDtya19wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDt4cGNzX3JrX3Byb2JlJiMzNDssCiAgICAmIzM0O3hwY3NfcmtfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlciYjMzk7cyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzLiBUaGVzZSBnZW5lcmljIGFuZCBQQ0ktYmFzZWQgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgbmV0bGluayBpbnRlcmZhY2UgbWFuaXB1bGF0aW9uLCBtYWtpbmcgdGhlIHBhdGNoIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDEyNiBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbiYjNDM7JVlBTUwgMS4yXG4mIzQzOy0tLVxuJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBDU1xuJiM0MztcbiYjNDM7bWFpbnRhaW5lcnM6XG4mIzQzOyAgLSBDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgUm9ja2NoaXAgUkszNTY4IFNvQyBpbnRlZ3JhdGVzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbFxuJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuXG4mIzQzOyAgVGhlIFBDUyBwcm92aWRlcyBhbiBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgTWVkaWEgQWNjZXNzIENvbnRyb2wgKE1BQylcbiYjNDM7ICBhbmQgdGhlIFBoeXNpY2FsIE1lZGl1bSBBdHRhY2htZW50IChQTUEpIHN1YmxheWVyIHRocm91Z2ggYSBNZWRpYVxuJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuXG4mIzQzO1xuJiM0MzsgIFRoZSBYUENTIGlzIGFjY2Vzc2VkIG92ZXIgdGhlIEFQQjMgYnVzIGFuZCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBhXG4mIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuXG4mIzQzOyAgSXQgc3VwcG9ydHMgMTAwMEJBU0UtWCwgU0dNSUkgYW5kIFFTR01JSSBtb2Rlcy5cbiYjNDM7XG4mIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIChwY3MtbWlpQDAuLjMpIHRoYXQgY2FuIGJlXG4mIzQzOyAgaW5kaXZpZHVhbGx5IGVuYWJsZWQgYW5kIHJvdXRlZCB0byBvbmUgb2YgdGhlIEV0aGVybmV0IEdNQUMgY29udHJvbGxlcnNcbiYjNDM7ICB2aWEgdGhlIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyBkZXZpY2UgdHJlZSBub2RlLlxuJiM0MztcbiYjNDM7cHJvcGVydGllczpcbiYjNDM7ICBjb21wYXRpYmxlOlxuJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzXG4mIzQzO1xuJiM0MzsgICYjMzk7I2FkZHJlc3MtY2VsbHMmIzM5OzpcbiYjNDM7ICAgIGNvbnN0OiAxXG4mIzQzO1xuJiM0MzsgICYjMzk7I3NpemUtY2VsbHMmIzM5OzpcbiYjNDM7ICAgIGNvbnN0OiAwXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8XG4mIzQzOyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcbiYjNDM7ICAgICAgQVBCMyBidXMuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBjbG9ja3M6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcbiYjNDM7ICAgICAgLSBjc3I6IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyXG4mIzQzOyAgICAgICAgYWNjZXNzLlxuJiM0MzsgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxuJiM0MzsgICAgICAgIEV0aGVybmV0IChFRUUpIG9wZXJhdGlvbi5cbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogMlxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBjc3JcbiYjNDM7ICAgICAgLSBjb25zdDogZWVlXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXG4mIzQzOyAgICAgIHRoZSBzZXJpYWwgbGFuZXMgZm9yIDEwMDBCQVNFLVggLyBTR01JSSAvIFFTR01JSS5cbiYjNDM7ICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDU1xuJiM0MzsgICAgICByZWdpc3RlciBhY2Nlc3MuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLlxuJiM0MzsgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXG4mIzQzOyAgICAgIHN1cHBsaWVzIHRoZSBTZXJEZXMgUEhZLlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4mIzQzO3BhdHRlcm5Qcm9wZXJ0aWVzOlxuJiM0MzsgIFwmIzM0O15wY3MtbWlpQFswLTNdJFwmIzM0OzpcbiYjNDM7ICAgIHR5cGU6IG9iamVjdFxuJiM0MzsgICAgZGVzY3JpcHRpb246IHxcbiYjNDM7ICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy5cbiYjNDM7ICAgICAgVGhlIHBvcnQgbnVtYmVyIGlzIHNwZWNpZmllZCBieSB0aGUgcmVnIHByb3BlcnR5ICgwLi4zKS5cbiYjNDM7ICAgICAgVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGVcbiYjNDM7ICAgICAgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzIGRldmljZSB0cmVlIG5vZGUuXG4mIzQzO1xuJiM0MzsgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgcmVnOlxuJiM0MzsgICAgICAgIG1pbmltdW06IDBcbiYjNDM7ICAgICAgICBtYXhpbXVtOiAzXG4mIzQzOyAgICAgICAgZGVzY3JpcHRpb246IHxcbiYjNDM7ICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuXG4mIzQzO1xuJiM0MzsgICAgICBzdGF0dXM6IHRydWVcbiYjNDM7XG4mIzQzOyAgICByZXF1aXJlZDpcbiYjNDM7ICAgICAgLSByZWdcbiYjNDM7XG4mIzQzOyAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO3JlcXVpcmVkOlxuJiM0MzsgIC0gY29tcGF0aWJsZVxuJiM0MzsgIC0gcmVnXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzO1xuJiM0MzthZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9wb3dlci9yazM1NjgtcG93ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIHBjc0BmZGEwMDAwMCB7XG4mIzQzOyAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7ICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzOyAgICAgIHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbiYjNDM7ICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDtjc3JcJiMzNDssIFwmIzM0O2VlZVwmIzM0OztcbiYjNDM7ICAgICAgcGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuJiM0MzsgICAgICBwaHktbmFtZXMgPSBcJiMzNDtzZXJkZXNcJiMzNDs7XG4mIzQzOyAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgIHBjcy1taWlAMCB7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7ICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbmluZGV4IDM3OWIwOGJkOWU5N2E2Li42MTczMTkyZTMxYWIyZiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbkBAIC04MCw2ICYjNDM7ODAsMTMgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4mIzQzOyAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDpcbiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MzsgICAgZW51bTogWzAsIDFdXG4mIzQzOyAgICBkZWZhdWx0OiAwXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbiYjNDM7XG4gICBcJiMzNDsjcGh5LWNlbGxzXCYjMzQ7OlxuICAgICBjb25zdDogMVxuIFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44Y2JhNmEwYTJkZDAzNCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4mIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSU1xuQEAgLTIzNDYzLDYgJiM0MzsyMzQ2MywxNSBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAscmszNTc2LXNhaS55YW1sXG4gRjpcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxuIFxuJiM0MztST0NLQ0hJUCBYUENTIERSSVZFUlxuJiM0MztNOlx0Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4mIzQzO0w6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG4mIzQzO0w6XHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXG4mIzQzO1M6XHRNYWludGFpbmVkXG4mIzQzO0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuJiM0MztGOlx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbiYjNDM7RjpcdGluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbiYjNDM7XG4gUk9DS0VSIERSSVZFUlxuIE06XHRKaXJpIFBpcmtvIFx1MDAzY2ppcmlAcmVzbnVsbGkudXNcdTAwM2VcbiBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbmluZGV4IDU4YzEwNTJiYThlZjM1Li45MWMxN2I2MjRmZDE3ZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7cmszNTY4LmR0c2lcJiMzNDtcbkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgXHUwMDI2Y3B1MyB7XG4gXHRjcHUtc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2NwdVx1MDAzZTtcbiB9O1xuIFxuLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi9cbiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuJiM0MztcdHBjcy1oYW5kbGUgPSBcdTAwM2NcdTAwMjZ4cGNzX21paTBcdTAwM2U7XG4mIzQzO1x0bWFuYWdlZCA9IFwmIzM0O2luLWJhbmQtc3RhdHVzXCYjMzQ7O1xuJiM0MztcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4mIzQzO1x0cGh5LW1vZGUgPSBcJiMzNDtzZ21paVwmIzM0OztcbiYjNDM7XHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbiYjNDM7XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZnbWFjMF9taWltXHUwMDNlO1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4gfTtcbiBcbiAvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgV0FOIHBvcnQgKi9cbkBAIC0zNDEsNiAmIzQzOzM1MiwzOSBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG4mIzQzO1x1MDAyNm1kaW8wIHtcbiYjNDM7XHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWQwMDAwLjAxMWFcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MweDNcdTAwM2U7XG4mIzQzO1x0XHRtYXgtc3BlZWQgPSBcdTAwM2MxMDAwXHUwMDNlO1xuJiM0MztcdFx0ZWVlLWJyb2tlbi0xMGd0O1xuJiM0MztcdFx0ZWVlLWJyb2tlbi0xMGdreDQ7XG4mIzQzO1x0XHRlZWUtYnJva2VuLTEwZ2tyO1xuJiM0MztcdFx0cmVzZXQtYXNzZXJ0LXVzID0gXHUwMDNjMjAwMDBcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1kZWFzc2VydC11cyA9IFx1MDAzYzEwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzMgUktfUEM2IEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRsZWRzIHtcbiYjNDM7XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMSB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMiB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4mIzQzO307XG4mIzQzO1xuIFx1MDAyNm1kaW8xIHtcbiBcdHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuIFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcJiMzNDs7XG5AQCAtMzUwLDYgJiM0MzszOTQsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiBcdFx0cngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MxNTAwXHUwMDNlO1xuIFx0XHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0bGVkcyB7XG4mIzQzO1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdFx0bGVkQDEge1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcdTAwM2U7XG4mIzQzO1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuJiM0MztcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcJiMzNDtrZWVwXCYjMzQ7O1xuJiM0MztcdFx0XHR9O1xuJiM0MztcbiYjNDM7XHRcdFx0bGVkQDIge1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzO1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfR1JFRU5cdTAwM2U7XG4mIzQzO1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuJiM0MztcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcJiMzNDtrZWVwXCYjMzQ7O1xuJiM0MztcdFx0XHR9O1xuJiM0MztcdFx0fTtcbiBcdH07XG4gfTtcbiBcbkBAIC01ODYsMyAmIzQzOzY0OSwxMyBAQCBcdTAwMjZ4aW4zMmsge1xuIFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4gXHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZjbGszMmtfb3V0MVx1MDAzZTtcbiB9O1xuJiM0MztcbiYjNDM7XHUwMDI2eHBjcyB7XG4mIzQzO1x0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiYjNDM7XHRwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4mIzQzO1x0cGh5LW5hbWVzID0gXCYjMzQ7c2VyZGVzXCYjMzQ7O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7XHUwMDI2eHBjc19taWkwIHtcbiYjNDM7XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0Mzt9O1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5pbmRleCAzYmM2NTNmMDI3ZjFmZS4uOTg5ZTE2NGMwZWIzOTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5AQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiBcdH07XG4gXG4mIzQzO1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MztcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkyOiBwY3MtbWlpQDIge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xuJiM0MztcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZpeGVkLWNsb2NrXCYjMzQ7O1xuJiM0MztcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuJiM0MztcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpXCYjMzQ7O1xuJiM0MztcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtY2xvY2tcJiMzNDs7XG4mIzQzO1x0XHRjbG9jay1mcmVxdWVuY3kgPSBcdTAwM2MxMjUwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDtjbGtfZ21hYzFfeHBjc19taWlcJiMzNDs7XG4mIzQzO1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdH07XG4mIzQzO1xuIFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcbiBcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3JvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcJiMzNDssIFwmIzM0O3N5c2NvblwmIzM0OztcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYWYuLjUwODhhY2MwNjk4MmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuQEAgLTE3MCw2ICYjNDM7MTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4mIzQzO1x0c2VsZWN0IFBDU19YUENTX1JPQ0tDSElQXG4gXHRoZWxwXG4gXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuaW5kZXggYjhkNDY3YmE2ZDcyZDMuLjA4MTMyM2MzMmJjYzExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuQEAgLTU3MiwxMyAmIzQzOzU3Miw0NyBAQCBzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiBcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlO1xuJiM0MztcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbiYjNDM7XHRpbnQgYWRkcjtcbiYjNDM7XG4mIzQzO1x0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuJiM0MztcbiYjNDM7XHRpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OykpIHtcbiYjNDM7XHRcdHBjc25vZGUgPSBmd25vZGVfZmluZF9yZWZlcmVuY2UoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4mIzQzO1x0XHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xuJiM0MztcdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbiYjNDM7XHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIoeHBjcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbiYjNDM7XG4mIzQzO1x0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgaW50ZWxfbWdiZV9wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0eHBjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICppbnRlbF9tZ2JlX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbi1cdC8qIHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VoYXNfeHBjcyBoYXMgYmVlbiBzZXQgdHJ1ZSwgc28gdGhlcmVcbi1cdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXG4tXHQgKiByZXR1cm4gdGhpcyBpZiBwcmVzZW50LlxuLVx0ICovXG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuIH1cbiBcbkBAIC03MDIsNiAmIzQzOzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdCAgICBwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xuIFx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTtcbiBcdFx0cGxhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbiYjNDM7XHRcdHBsYXQtXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xuIFx0XHRwbGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBpbnRlbF9tZ2JlX3NlbGVjdF9wY3M7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXG5pbmRleCAxOWYzNGUxOGJmZWYyYy4uOWFmMzJjMjZmOWMxNDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggJiM0Mzs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjE5Li5lY2E0ODJiNGI2YmZjMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5AQCAtNDcsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdHZvaWQgKCpzZXRfdG9fcmdtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxuIFx0XHRcdCAgICAgaW50IHR4X2RlbGF5LCBpbnQgcnhfZGVsYXkpO1xuIFx0dm9pZCAoKnNldF90b19ybWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XG4mIzQzO1x0dm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuIFx0aW50ICgqc2V0X3NwZWVkKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTtcbiBcdHZvaWQgKCppbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XG5AQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXHRib29sIHBocF9ncmZfcmVxdWlyZWQ7XG4gXHRib29sIHJlZ3NfdmFsaWQ7XG4gXHR1MzIgcmVnc1tdO1xuQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHtcbiBcdGJvb2wgaW50ZWdyYXRlZF9waHk7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiAmIzQzOzgxMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTI4X29wcyA9IHtcbiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMVx0XHQweDAzOGNcbiBcbiAvKiBSSzM1NjhfR1JGX0dNQUMwX0NPTjEgXHUwMDI2XHUwMDI2IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqL1xuJiM0MzsjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSVx0XHRHUkZfQ0xSX0JJVCg3KVxuJiM0MzsjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCAmIzQzOzg1NywzMiBAQCBzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3JnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX0NMS19UWF9ETF9DRkcodHhfZGVsYXkpKTtcbiBcbiBcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsXG4mIzQzO1x0XHQgICAgIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSSB8XG4gXHRcdCAgICAgUkszNTY4X0dNQUNfUlhDTEtfRExZX0VOQUJMRSB8XG4gXHRcdCAgICAgUkszNTY4X0dNQUNfVFhDTEtfRExZX0VOQUJMRSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGNvbjE7XG4mIzQzO1xuJiM0MztcdGNvbjEgPSAoYnNwX3ByaXYtXHUwMDNlaWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOlxuJiM0MztcdFx0XHRcdCAgICAgUkszNTY4X0dSRl9HTUFDMF9DT04xO1xuJiM0MztcbiYjNDM7XHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXHUwMDNlZ3JmLCBjb24xLCBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuJiM0MztcdC5zZXRfdG9fc2dtaWkgPSByazM1Njhfc2V0X3RvX3NnbWlpLFxuJiM0MztcbiBcdC5zZXRfc3BlZWQgPSBya19zZXRfY2xrX21hY19zcGVlZCxcbiBcbiBcdC5nbWFjX3BoeV9pbnRmX3NlbF9tYXNrID0gR0VOTUFTS19VMTYoNiwgNCksXG4gXG4gXHQuc3VwcG9ydHNfcm1paSA9IHRydWUsXG4mIzQzO1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0ZGV2X2Vycihic3BfcHJpdi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XFxuXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgcmtfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpwY3Nfbm9kZTtcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbiYjNDM7XG4mIzQzO1x0cGNzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbiYjNDM7XHRpZiAoIXBjc19ub2RlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHhwY3MgPSB4cGNzX3JrX2NyZWF0ZShwcml2LVx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xuJiM0MztcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHhwY3MpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoeHBjcyk7XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJrX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpya19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgJiM0MzsxMzg3LDcgQEAgc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiBcbiBcdGJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3JnbWlpID0gb3BzLVx1MDAzZXN1cHBvcnRzX3JnbWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19yZ21paTtcbiBcdGJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3JtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcm1paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fcm1paTtcbiYjNDM7XHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19zZ21paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19zZ21paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fc2dtaWk7XG4gXG4gXHRpZiAob3BzLVx1MDAzZWluaXQpIHtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZWluaXQoYnNwX3ByaXYpO1xuQEAgLTEzNjEsNiAmIzQzOzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRcdGlmICghYnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldixcbiBcdFx0XHRcJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWRcJiMzNDssIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSw2ICYjNDM7MTQ0MSw5IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRpZiAoYnNwX3ByaXYtXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRcdGdvdG8gc2V0X21vZGU7XG4mIzQzO1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xNDE2LDcgJiM0MzsxNDgxLDggQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdC8qcm1paSBvciByZ21paSovXG4mIzQzO3NldF9tb2RlOlxuJiM0MztcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O2luaXQgZm9yIFJHTUlJXFxuXCYjMzQ7KTtcbkBAIC0xNDQ3LDYgJiM0MzsxNTEzLDExIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19ybWlpKVxuIFx0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paShic3BfcHJpdik7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuJiM0MztcdFx0ZGV2X2luZm8oZGV2LCBcJiMzNDtpbml0IGZvciBTR01JSVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paSlcbiYjNDM7XHRcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paShic3BfcHJpdik7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtOTyBpbnRlcmZhY2UgZGVmaW5lZCFcXG5cJiMzNDspO1xuIFx0fVxuQEAgLTE0ODYsNiAmIzQzOzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxuIFxuIFx0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3JtaWkpXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSwgaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdGlmIChyay1cdTAwM2VzdXBwb3J0c19zZ21paSlcbiYjNDM7XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksIGludGVyZmFjZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJrX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdl8sIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuQEAgLTE2MDIsNiAmIzQzOzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4mIzQzO1x0aWYgKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4mIzQzO1x0XHQvKiBTR01JSSBjbG9jayBhbHdheXMgcnVucyBhdCAxMjUgTUh6ICovXG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xuJiM0MztcdFx0cGxhdF9kYXQtXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xuIFx0aWYgKElTX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbmluZGV4IDEzNjM0OTY1YmMxOWExLi4wMWRmNDc3NmVkYjNmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5AQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbmluZGV4IDFkN2YwYTU3ZDI4ODk3Li42ZDRiYzFmZThmNzUxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5AQCAtNTM5LDggJiM0Mzs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbmluZGV4IGFmZTk4ZmY1YmRjYjA1Li5kMmY3N2YwYzIyM2E3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbkBAIC00MjYsMzYgJiM0Mzs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwmIzM0O3Bjcy1oYW5kbGVcJiMzNDspKSB7XG4tXHRcdHBjc25vZGUgPSBmd25vZGVfZmluZF9yZWZlcmVuY2UoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4tXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4tXHRcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhIFx1MDAyNlx1MDAyNlxuLVx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykge1xuLVx0XHRhZGRyID0gZmZzKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSAtIDE7XG4tXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbi1cdFx0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKHhwY3MpO1xuLVx0fSBlbHNlIHtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdClcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4mIzQzO1x0cmV0ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KHByaXYpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXZpY2UsIHJldCwgXCYjMzQ7Tm8geFBDUyBmb3VuZFxcblwmIzM0Oyk7XG4gXG4tXHRpZiAoeHBjcylcbi1cdFx0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbi1cbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4tXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDYzLDE0ICYjNDM7NDQyLDEwIEBAIHZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQpXG4tXHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfZXhpdChwcml2KTtcbi1cbi1cdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4mIzQzO1x0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KHByaXYpO1xuIH1cbiBcbiBzdHJ1Y3Qgc3RtbWFjX2Nsa19yYXRlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXG5pbmRleCBlNDE3ZmQ2NmY2NjBhZC4uMzI4NmJjOTNlNzAyNjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICYjNDM7MTIsMjggQEAgY29uZmlnIFBDU19YUENTXG4gXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xuIFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXG4gXG4mIzQzO2lmIFBDU19YUENTXG4mIzQzO1xuJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0ZGVmYXVsdCBQQ1NfWFBDU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4mIzQzO1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4mIzQzO1x0ICBkYXRhIGZvciBzZXR1cC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7Y29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4mIzQzO1xuJiM0MztcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7ZW5kaWYgIyBQQ1NfWFBDU1xuJiM0MztcbiBjb25maWcgUENTX0xZTlhcbiBcdHRyaXN0YXRlXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5pbmRleCA0Zjc5MjA2MThiOTAwNS4uYzgwOWI3Zjk0MmE1MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuQEAgLTEsMTAgJiM0MzsxLDkgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcbiBcbi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUylcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXG4tXHRcdFx0XHQgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4tXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQmIzQzOz0gcGNzX3hwY3Mub1xuJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1MpICYjNDM7PSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cbiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSAmIzQzOz0gcGNzLXhwY3MtcGxhdC5vXG4mIzQzO29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJUCkgJiM0Mzs9IHBjcy14cGNzLXJrLm9cbiBvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCYjNDM7PSBwY3MtbHlueC5vXG4gb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG4gb2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lZDk2OWEzOGQ1NDRkNVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbkBAIC0wLDAgJiM0MzsxLDUyNiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKlxuJiM0MzsgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXJcbiYjNDM7ICpcbiYjNDM7ICogQmFzZWQgb24gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pblxuJiM0MzsgKlxuJiM0MzsgKiBBZGFwdGVkIGZvciBSb2NrY2hpcCBTb0NzLCB3aXRoIHJlZmVyZW5jZSB0byB0aGUgUm9ja2NoaXAgT0VNIGRyaXZlci5cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnRcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fZG9tYWluLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2l6ZXMuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cGNzLXhwY3MuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RydWN0IGR3X3hwY3Nfcmsge1xuJiM0MztcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cztcbiYjNDM7XHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XG4mIzQzO1x0c3RydWN0IGNsayAqY3NyX2NsaztcbiYjNDM7XHRzdHJ1Y3QgY2xrICplZWVfY2xrO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRwdHJkaWZmX3QgY3NyO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcmVhZGwocHhwY3MtXHUwMDNlcmVnX2Jhc2UgJiM0MzsgKGNzciBcdTAwM2NcdTAwM2MgMikpIFx1MDAyNiAweGZmZmY7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHB0cmRpZmZfdCBjc3I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHR3cml0ZWwodmFsLCBweHBjcy1cdTAwM2VyZWdfYmFzZSAmIzQzOyAoY3NyIFx1MDAzY1x1MDAzYyAyKSk7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVx0MlxuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkyXHQzXG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTNcdDRcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXHQ2XG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSVx0N1xuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgeHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoaW50IGFkZHIpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gIShhZGRyIFx1MDAzYyAwIHx8IGFkZHIgXHUwMDNlIDMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoZGV2KSB7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbiYjNDM7XHRjYXNlIE1ESU9fTU1EX1ZFTkQyOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGFkZHIpIHtcbiYjNDM7XHRjYXNlIDA6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbiYjNDM7XHRjYXNlIDE6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4mIzQzO1x0Y2FzZSAyOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuJiM0MztcdGNhc2UgMzpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGRldikge1xuJiM0MztcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOWElPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbiYjNDM7XHRzd2l0Y2ggKHJlZykge1xuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbiYjNDM7XHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOlxuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoYWRkcikge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGNhc2UgMTpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbiYjNDM7XHRjYXNlIDI6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBkZXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMHhmZmZmO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IGRldjtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcbiYjNDM7XHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFweHBjcylcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VwZGV2ID0gcGRldjtcbiYjNDM7XG4mIzQzO1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBweHBjcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwmIzM0O3NlcmRlc1wmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSxcbiYjNDM7XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1xuJiM0MztcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBwb3dlci1kb21haW5zXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfaW5pdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIHBtX2RvbWFpbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcXG5cJiMzNDspO1xuJiM0MztcdFx0Z290byBzZXJkZXNfcGh5O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO3NlcmRlc19waHk6XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO3BtX2RvbWFpbjpcbiYjNDM7XHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVx1MDAzZXBkZXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IHJlc291cmNlICpyZXM7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XG4mIzQzO1x0aWYgKCFyZXMpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtObyByZWctc3BhY2UgZm91bmRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFx1MDAzYyBTWl8yTSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ludmFsaWQgcmVnLXNwYWNlIHNpemVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSkpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlY3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwmIzM0O2NzclwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSxcbiYjNDM7XHRcdFx0XHRcdCBcJiMzNDtGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuJiM0MztcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7ZWVlXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O0ZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgRUVFIGNsb2NrOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdHN0YXRpYyBhdG9taWNfdCBpZCA9IEFUT01JQ19JTklUKC0xKTtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgMCk7XG4mIzQzO1x0aWYgKCFidXMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSb2NrY2hpcCBEVyBYUENTIE1DSS9BUEIzXCYjMzQ7O1xuJiM0MztcdGJ1cy1cdTAwM2VyZWFkID0geHBjc19ya19yZWFkX2MyMjtcbiYjNDM7XHRidXMtXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcbiYjNDM7XHRidXMtXHUwMDNlcmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1O1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTtcbiYjNDM7XHRidXMtXHUwMDNlcGh5X21hc2sgPSB+MDtcbiYjNDM7XHRidXMtXHUwMDNlcGFyZW50ID0gZGV2O1xuJiM0MztcdGJ1cy1cdTAwM2Vwcml2ID0gcHhwY3M7XG4mIzQzO1xuJiM0MztcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLFxuJiM0MztcdFx0IFwmIzM0O3JvY2tjaGlwX2R3eHBjcy0leFwmIzM0OywgYXRvbWljX2luY19yZXR1cm4oXHUwMDI2aWQpKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNRElPLWJ1cyBoZXJlIHNlcnZlcyBhcyBqdXN0IGEgYmFjay1lbmQgZW5naW5lIGFic3RyYWN0aW5nIG91dFxuJiM0MztcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcbiYjNDM7XHQgKiBhY2Nlc3MuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlYnVzID0gYnVzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRweHBjcyA9IHhwY3NfcmtfY3JlYXRlX2RhdGEocGRldik7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXG4mIzQzO1x0ICogbXVzdCBiZSBwb3dlcmVkIG9uIGJlZm9yZSBhbnkgcmVnaXN0ZXIgYWNjZXNzLCBvdGhlcndpc2UgdGhlIFNvQyB3aWxsXG4mIzQzO1x0ICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogQWNjZXNzaW5nIHRoZSBYUENTIHJlZ2lzdGVycyBhbHNvIHJlcXVpcmVzIGEgVFggY2xvY2sgZnJvbSB0aGUgU2VyRGVzLFxuJiM0MztcdCAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X2luaXQocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX2luaXRfY2xrKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4mIzQzO1x0dTMyIHBvcnQ7XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoKGludClwb3J0KSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgWFBDUyBwZGV2IGlzIGF0dGFjaGVkIHRvIHRoZSBwYXJlbnQgbm9kZSAqL1xuJiM0MztcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xuJiM0MztcdGlmICghcGNzX25wKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwY3NfbnApKSB7XG4mIzQzO1x0XHRvZl9ub2RlX3B1dChwY3NfbnApO1xuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShwY3NfbnApO1xuJiM0MztcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4mIzQzO1x0aWYgKCFwZGV2KVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4mIzQzO1x0aWYgKCFweHBjcyB8fCAhcHhwY3MtXHUwMDNlYnVzKSB7XG4mIzQzO1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHhwY3MtXHUwMDNlYnVzLCAoaW50KXBvcnQpO1xuJiM0MztcdGlmIChJU19FUlIoeHBjcykpIHtcbiYjNDM7XHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdFx0cmV0dXJuIHhwY3M7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKTtcbiYjNDM7XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRyZXR1cm4geHBjcztcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh4cGNzX3JrX2NyZWF0ZSk7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuJiM0MztcbiYjNDM7XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlY3NyX2Nsayk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtXHUwMDNlY3NyX2Nsayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB4cGNzX3JrX3BtX29wcyA9IHtcbiYjNDM7XHRTRVRfUlVOVElNRV9QTV9PUFMoeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4mIzQzO1x0XHRcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUsXG4mIzQzO1x0XHRcdCAgIE5VTEwpXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OyB9LFxuJiM0MztcdHsgLyogc2VudGluZWwgKi8gfSxcbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeHBjc19ya19vZl9pZHMpO1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgeHBjc19ya19kcml2ZXIgPSB7XG4mIzQzO1x0LnByb2JlID0geHBjc19ya19wcm9iZSxcbiYjNDM7XHQuZHJpdmVyID0ge1xuJiM0MztcdFx0Lm5hbWUgPSBcJiMzNDtya194cGNzLWR3eHBjc1wmIzM0OyxcbiYjNDM7XHRcdC5wbSA9IFx1MDAyNnhwY3NfcmtfcG1fb3BzLFxuJiM0MztcdFx0Lm9mX21hdGNoX3RhYmxlID0geHBjc19ya19vZl9pZHMsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw2ICYjNDM7ODE2LDExIEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdC8qIENsZWFyIENMMzcgQU4gY29tcGxldGUgc3RhdHVzICovXG4mIzQzO1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbiBcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbkBAIC04ODQsNyAmIzQzOzg4OSw3IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFxuIFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkge1xuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbi1cdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbiYjNDM7XHRcdFx0XHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTEwNTgsNiAmIzQzOzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcbiBcdC8qIFJlc2V0IGxpbmtfc3RhdGUgKi9cbiBcdHN0YXRlLVx1MDAzZWxpbmsgPSBmYWxzZTtcbiYjNDM7XHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IGZhbHNlO1xuIFx0c3RhdGUtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XG4gXHRzdGF0ZS1cdTAwM2VwYXVzZSA9IDA7XG5AQCAtMTA2OSw2ICYjNDM7MTA3NSw4IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IHJldCBcdTAwMjYgRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSO1xuJiM0MztcbiBcdGlmIChyZXQgXHUwMDI2IERXX1ZSX01JSV9DMzdfQU5TR01fU1BfTE5LU1RTKSB7XG4gXHRcdGludCBzcGVlZF92YWx1ZTtcbiBcbkBAIC0xMDg2LDcgJiM0MzsxMDk0LDI0IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuIFx0XHRlbHNlXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4tXHR9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi9cbiYjNDM7XHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4mIzQzO1x0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuJiM0MztcbiYjNDM7XHRpZiAoeHBjcy1cdTAwM2VpbmZvLnBtYSAhPSBXWF9UWEdCRV9YUENTX1BNQV8xMEdfSUQpIHtcbiYjNDM7XHRcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xuJiM0MztcdFx0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuJiM0MztcdFx0XHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxuJiM0MztcdFx0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IERXX1ZSX01JSV9BTl9TVFNfQzM3X0FOQ01QTFRfSU5UUikge1xuIFx0XHRpbnQgc3BlZWQsIGR1cGxleDtcbiBcbiBcdFx0c3RhdGUtXHUwMDNlbGluayA9IHRydWU7XG5AQCAtMTExMiw3ICYjNDM7MTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRlbHNlIGlmIChkdXBsZXggXHUwMDI2IEFEVkVSVElTRV8xMDAwWEhBTEYpXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4gXG4tXHRcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jIGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbmluZGV4IDJiMGYxNTJmNTQ3MDkxLi5mZjI5MGJjMTg1ODlhZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuQEAgLTE4Niw2ICYjNDM7MTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5O1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMF9zZWw7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDtcbiYjNDM7XHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xuIH07XG5AQCAtMjEyLDYgJiM0MzsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcbiBcdGJvb2wgZW5hYmxlX3NzYztcbiBcdGJvb2wgZXh0X3JlZmNsaztcbiBcdHN0cnVjdCBjbGsgKnJlZmNsaztcbiYjNDM7XHR1MzIgc2dtaWlfbWFjX3NlbDtcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2LFxuQEAgLTM3NSw2ICYjNDM7Mzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlcbiBcbiBcdHByaXYtXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXCYjMzQ7cm9ja2NoaXAsZXh0LXJlZmNsa1wmIzM0Oyk7XG4gXG4mIzQzO1x0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsID0gMDtcbiYjNDM7XHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDtyb2NrY2hpcCxzZ21paS1tYWMtc2VsXCYjMzQ7LCBcdTAwMjZwcml2LVx1MDAzZXNnbWlpX21hY19zZWwpO1xuJiM0MztcbiBcdHByaXYtXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXCYjMzQ7cGh5XCYjMzQ7KTtcbiBcdC8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi9cbiBcdGlmIChQVFJfRVJSKHByaXYtXHUwMDNlcGh5X3JzdCkgPT0gLUVOT0VOVClcbkBAIC04NzMsNiAmIzQzOzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfVFlQRV9TR01JSTpcbiYjNDM7XHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2dtaWlfbWFjX3NlbCxcbiYjNDM7XHRcdFx0XHRcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCBcdTAwM2UgMCk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfeHBjc19waHlfcmVhZHksIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfcGh5bW9kZV9zZWwsIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7XG5AQCAtOTg0LDYgJiM0Mzs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7XG4gXHQuY29uM19mb3Jfc2F0YVx0XHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXG4gXHQvKiBwaXBlLWdyZiAqL1xuIFx0LnBpcGVfY29uMF9mb3Jfc2F0YVx0PSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LFxuJiM0MztcdC5waXBlX3NnbWlpX21hY19zZWxcdD0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSxcbiBcdC5waXBlX3hwY3NfcGh5X3JlYWR5XHQ9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sXG4gXHQudTNvdGcwX3BvcnRfZW5cdFx0PSB7IDB4MDEwNCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXG4gXHQudTNvdGcxX3BvcnRfZW5cdFx0PSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjg3MjNkNWJkNzVjY2Vcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgJiM0MzsxLDExIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzOyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDssCiAgICAmIzM0O1BDU19YUENTJiMzNDssCiAgICAmIzM0O1BDU19YUENTX1JPQ0tDSElQJiMzNDssCiAgICAmIzM0O0RXTUFDX1JPQ0tDSElQJiMzNDssCiAgICAmIzM0O1BIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQk9fUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4JiMzNDssCiAgICAmIzM0O3hwY3NfZ2V0X3N0YXRlX2MzN19zZ21paSYjMzQ7LAogICAgJiMzNDtpbnRlbF9tZ2JlX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3N0bW1hY19wY3Nfc2V0dXAmIzM0OywKICAgICYjMzQ7cmtfcGNzX2luaXQmIzM0OywKICAgICYjMzQ7eHBjc19ya19wcm9iZSYjMzQ7LAogICAgJiMzNDt4cGNzX3JrX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjggWFBDUywgd2hpY2ggaW5jbHVkZXMgYSBuZXcgcGxhdGZvcm0gZHJpdmVyIGFuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBnZW5lcmljIHBjcy14cGNzIGRyaXZlciBhbmQgc3RtbWFjIGRyaXZlci4gV2hpbGUgdGhlIFJvY2tjaGlwLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBtaWdodCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMsIHRoZSBwYXRjaCBhbHNvIHJlZmFjdG9ycyBob3cgdGhlIFBDUyBpcyBpbml0aWFsaXplZCBpbiB0aGUgZ2VuZXJpYyBzdG1tYWMgZHJpdmVyIGFuZCBtb2RpZmllcyB0aGUgSW50ZWwgbUdCRSBQQ0kgZHJpdmVyIChkd21hYy1pbnRlbC5jKSB0byB1c2UgdGhlIG5ldyBpbml0aWFsaXphdGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgaXQgbW9kaWZpZXMgdGhlIGdlbmVyaWMgcGNzLXhwY3MuYyBkcml2ZXImIzM5O3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCkBAIC0wLDAgJiM0MzsxLDEyNiBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIENvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwKJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuCiYjNDM7ICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKQomIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWEKJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuCiYjNDM7CiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYQomIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuCiYjNDM7ICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLgomIzQzOwomIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIChwY3MtbWlpQDAuLjMpIHRoYXQgY2FuIGJlCiYjNDM7ICBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmQgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycwomIzQzOyAgdmlhIHRoZSBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzCiYjNDM7CiYjNDM7ICAmIzM5OyNhZGRyZXNzLWNlbGxzJiMzOTs6CiYjNDM7ICAgIGNvbnN0OiAxCiYjNDM7CiYjNDM7ICAmIzM5OyNzaXplLWNlbGxzJiMzOTs6CiYjNDM7ICAgIGNvbnN0OiAwCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBYUENTIHJlZ2lzdGVyIHNwYWNlIG1hcHBlZCBvdmVyIHRoZQomIzQzOyAgICAgIEFQQjMgYnVzLgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgY2xvY2tzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIENsb2NrIHNvdXJjZXMgZm9yIHRoZSBYUENTOgomIzQzOyAgICAgIC0gY3NyOiBBUEIzIGJ1cyBpbnRlcmZhY2UgY2xvY2sgKGNsa19jc3JfaSksIHJlcXVpcmVkIGZvciByZWdpc3RlcgomIzQzOyAgICAgICAgYWNjZXNzLgomIzQzOyAgICAgIC0gZWVlOiBFRUUgY2xvY2sgKGNsa19lZWVfaSksIHJlcXVpcmVkIGZvciBFbmVyZ3kgRWZmaWNpZW50CiYjNDM7ICAgICAgICBFdGhlcm5ldCAoRUVFKSBvcGVyYXRpb24uCiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogY3NyCiYjNDM7ICAgICAgLSBjb25zdDogZWVlCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIFRoZSBwaGFuZGxlIG9mIFNlckRlcyBQSFkgKE5hbmVuZyBDb21ibyBQSFkpIHRoYXQgcHJvdmlkZXMKJiM0MzsgICAgICB0aGUgc2VyaWFsIGxhbmVzIGZvciAxMDAwQkFTRS1YIC8gU0dNSUkgLyBRU0dNSUkuCiYjNDM7ICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDUwomIzQzOyAgICAgIHJlZ2lzdGVyIGFjY2Vzcy4KJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHBoeS1uYW1lczoKJiM0MzsgICAgY29uc3Q6IHNlcmRlcwomIzQzOwomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgZGVzY3JpcHRpb246IHwKJiM0MzsgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLgomIzQzOyAgICAgIE9uIFJLMzU2OCB0aGlzIGlzIHR5cGljYWxseSB0aGUgUERfUElQRSBwb3dlciBkb21haW4sIHdoaWNoIGFsc28KJiM0MzsgICAgICBzdXBwbGllcyB0aGUgU2VyRGVzIFBIWS4KJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MztwYXR0ZXJuUHJvcGVydGllczoKJiM0MzsgICYjMzQ7XnBjcy1taWlAWzAtM10kJiMzNDs6CiYjNDM7ICAgIHR5cGU6IG9iamVjdAomIzQzOyAgICBkZXNjcmlwdGlvbjogfAomIzQzOyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuCiYjNDM7ICAgICAgVGhlIHBvcnQgbnVtYmVyIGlzIHNwZWNpZmllZCBieSB0aGUgcmVnIHByb3BlcnR5ICgwLi4zKS4KJiM0MzsgICAgICBUaGUgcG9ydCBpcyBsaW5rZWQgdG8gYW4gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXIgdmlhIHRoZQomIzQzOyAgICAgIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyYjMzk7cyBkZXZpY2UgdHJlZSBub2RlLgomIzQzOwomIzQzOyAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgIHJlZzoKJiM0MzsgICAgICAgIG1pbmltdW06IDAKJiM0MzsgICAgICAgIG1heGltdW06IDMKJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuCiYjNDM7CiYjNDM7ICAgICAgc3RhdHVzOiB0cnVlCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7CiYjNDM7ICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSBjbG9ja3MKJiM0MzsgIC0gY2xvY2stbmFtZXMKJiM0MzsKJiM0MzthZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHBjc0BmZGEwMDAwMCB7CiYjNDM7ICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OzsKJiM0MzsgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICByZWcgPSAmbHQ7MHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwJmd0OzsKJiM0MzsgICAgICBjbG9ja3MgPSAmbHQ7JmFtcDtjcnUgUENMS19YUENTJmd0OywgJmx0OyZhbXA7Y3J1IENMS19YUENTX0VFRSZndDs7CiYjNDM7ICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2NzciYjMzQ7LCAmIzM0O2VlZSYjMzQ7OwomIzQzOyAgICAgIHBoeXMgPSAmbHQ7JmFtcDtjb21icGh5MiBQSFlfVFlQRV9TR01JSSZndDs7CiYjNDM7ICAgICAgcGh5LW5hbWVzID0gJiMzNDtzZXJkZXMmIzM0OzsKJiM0MzsgICAgICBwb3dlci1kb21haW5zID0gJmx0OyZhbXA7cG93ZXIgUkszNTY4X1BEX1BJUEUmZ3Q7OwomIzQzOwomIzQzOyAgICAgIHBjcy1taWlAMCB7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MCZndDs7CiYjNDM7ICAgICAgfTsKJiM0MzsgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCmluZGV4IDM3OWIwOGJkOWU5N2E2Li42MTczMTkyZTMxYWIyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCkBAIC04MCw2ICYjNDM7ODAsMTMgQEAgcHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjoKICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLgogCiYjNDM7ICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOgomIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsgICAgZW51bTogWzAsIDFdCiYjNDM7ICAgIGRlZmF1bHQ6IDAKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci4KJiM0MzsKICAgJiMzNDsjcGh5LWNlbGxzJiMzNDs6CiAgICAgY29uc3Q6IDEKIApkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA4MDZiZDJkODBkMTUzNS4uOGNiYTZhMGEyZGQwMzQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC0yMzQ2Myw2ICYjNDM7MjM0NjMsMTUgQEAgUzoJTWFpbnRhaW5lZAogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbAogRjoJc291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qCiAKJiM0MztST0NLQ0hJUCBYUENTIERSSVZFUgomIzQzO006CUNvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwomIzQzO0w6CWxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKJiM0MztTOglNYWludGFpbmVkCiYjNDM7RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwKJiM0MztGOglkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwomIzQzO0Y6CWluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmgKJiM0MzsKIFJPQ0tFUiBEUklWRVIKIE06CUppcmkgUGlya28gJmx0O2ppcmlAcmVzbnVsbGkudXMmZ3Q7CiBMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzCmluZGV4IDU4YzEwNTJiYThlZjM1Li45MWMxN2I2MjRmZDE3ZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMKQEAgLTMsNiAmIzQzOzMsNyBAQAogL2R0cy12MS87CiAKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvbGVkcy9jb21tb24uaCZndDsKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3Mvc29jL3JvY2tjaGlwLHZvcDIuaCZndDsKICNpbmNsdWRlICYjMzQ7cmszNTY4LmR0c2kmIzM0OwpAQCAtMjQyLDYgJiM0MzsyNDMsNyBAQCAmYW1wO2NvbWJwaHkxIHsKIAogJmFtcDtjb21icGh5MiB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiYjNDM7CXJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSAmbHQ7MCZndDs7CiB9OwogCiAmYW1wO2NwdTAgewpAQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgJmFtcDtjcHUzIHsKIAljcHUtc3VwcGx5ID0gJmx0OyZhbXA7dmRkX2NwdSZndDs7CiB9OwogCi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovCiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovCiAmYW1wO2dtYWMwIHsKLQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiYjNDM7CWFzc2lnbmVkLWNsb2NrcyA9ICZsdDsmYW1wO2NydSBTQ0xLX0dNQUMwX1JYX1RYJmd0OzsKJiM0MzsJYXNzaWduZWQtY2xvY2stcGFyZW50cyA9ICZsdDsmYW1wO3hwY3NfZ21hYzBfY2xrJmd0OzsKJiM0MzsJcGNzLWhhbmRsZSA9ICZsdDsmYW1wO3hwY3NfbWlpMCZndDs7CiYjNDM7CW1hbmFnZWQgPSAmIzM0O2luLWJhbmQtc3RhdHVzJiMzNDs7CiYjNDM7CXBoeS1oYW5kbGUgPSAmbHQ7JmFtcDtzZ21paV9waHkmZ3Q7OwomIzQzOwlwaHktbW9kZSA9ICYjMzQ7c2dtaWkmIzM0OzsKJiM0MzsJcGh5LXN1cHBseSA9ICZsdDsmYW1wO3ZjY18zdjMmZ3Q7OwomIzQzOwlwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7CXBpbmN0cmwtMCA9ICZsdDsmYW1wO2dtYWMwX21paW0mZ3Q7OwomIzQzOwlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIH07CiAKIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqLwpAQCAtMzQxLDYgJiM0MzszNTIsMzkgQEAgJmFtcDtpMnMwXzhjaCB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiB9OwogCiYjNDM7JmFtcDttZGlvMCB7CiYjNDM7CXNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7ZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgzJmd0OzsKJiM0MzsJCW1heC1zcGVlZCA9ICZsdDsxMDAwJmd0OzsKJiM0MzsJCWVlZS1icm9rZW4tMTBndDsKJiM0MzsJCWVlZS1icm9rZW4tMTBna3g0OwomIzQzOwkJZWVlLWJyb2tlbi0xMGdrcjsKJiM0MzsJCXJlc2V0LWFzc2VydC11cyA9ICZsdDsyMDAwMCZndDs7CiYjNDM7CQlyZXNldC1kZWFzc2VydC11cyA9ICZsdDsxMDAwMDAmZ3Q7OwomIzQzOwkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDtncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XJmd0OzsKJiM0MzsKJiM0MzsJCWxlZHMgewomIzQzOwkJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJCSNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOwkJCWxlZEAxIHsKJiM0MzsJCQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfQU1CRVImZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWxlZEAyIHsKJiM0MzsJCQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfR1JFRU4mZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwkJfTsKJiM0MzsJfTsKJiM0Mzt9OwomIzQzOwogJmFtcDttZGlvMSB7CiAJcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiAJCWNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyJiMzNDs7CkBAIC0zNTAsNiAmIzQzOzM5NCwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHsKIAkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDtncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XJmd0OzsKIAkJcngtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MTUwMCZndDs7CiAJCXR4LWludGVybmFsLWRlbGF5LXBzID0gJmx0OzE1MDAmZ3Q7OwomIzQzOwomIzQzOwkJbGVkcyB7CiYjNDM7CQkJI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CQkJbGVkQDEgewomIzQzOwkJCQlyZWcgPSAmbHQ7MSZndDs7CiYjNDM7CQkJCWNvbG9yID0gJmx0O0xFRF9DT0xPUl9JRF9BTUJFUiZndDs7CiYjNDM7CQkJCWZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjsKJiM0MzsJCQkJZGVmYXVsdC1zdGF0ZSA9ICYjMzQ7a2VlcCYjMzQ7OwomIzQzOwkJCX07CiYjNDM7CiYjNDM7CQkJbGVkQDIgewomIzQzOwkJCQlyZWcgPSAmbHQ7MiZndDs7CiYjNDM7CQkJCWNvbG9yID0gJmx0O0xFRF9DT0xPUl9JRF9HUkVFTiZndDs7CiYjNDM7CQkJCWZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjsKJiM0MzsJCQkJZGVmYXVsdC1zdGF0ZSA9ICYjMzQ7a2VlcCYjMzQ7OwomIzQzOwkJCX07CiYjNDM7CQl9OwogCX07CiB9OwogCkBAIC01ODYsMyAmIzQzOzY0OSwxMyBAQCAmYW1wO3hpbjMyayB7CiAJcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwogCXBpbmN0cmwtMCA9ICZsdDsmYW1wO2NsazMya19vdXQxJmd0OzsKIH07CiYjNDM7CiYjNDM7JmFtcDt4cGNzIHsKJiM0MzsJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiYjNDM7CXBoeXMgPSAmbHQ7JmFtcDtjb21icGh5MiBQSFlfVFlQRV9TR01JSSZndDs7CiYjNDM7CXBoeS1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7fTsKJiM0MzsKJiM0MzsmYW1wO3hwY3NfbWlpMCB7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzO307CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQppbmRleCAzYmM2NTNmMDI3ZjFmZS4uOTg5ZTE2NGMwZWIzOTggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQpAQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAgewogCQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiAJfTsKIAomIzQzOwl4cGNzOiBwY3NAZmRhMDAwMDAgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OzsKJiM0MzsJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO2NydSBQQ0xLX1hQQ1MmZ3Q7LCAmbHQ7JmFtcDtjcnUgQ0xLX1hQQ1NfRUVFJmd0OzsKJiM0MzsJCWNsb2NrLW5hbWVzID0gJiMzNDtjc3ImIzM0OywgJiMzNDtlZWUmIzM0OzsKJiM0MzsJCXBvd2VyLWRvbWFpbnMgPSAmbHQ7JmFtcDtwb3dlciBSSzM1NjhfUERfUElQRSZndDs7CiYjNDM7CQlzdGF0dXMgPSAmIzM0O2Rpc2FibGVkJiMzNDs7CiYjNDM7CiYjNDM7CQl4cGNzX21paTA6IHBjcy1taWlAMCB7CiYjNDM7CQkJcmVnID0gJmx0OzAmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTE6IHBjcy1taWlAMSB7CiYjNDM7CQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTI6IHBjcy1taWlAMiB7CiYjNDM7CQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CiYjNDM7CQl4cGNzX21paTM6IHBjcy1taWlAMyB7CiYjNDM7CQkJcmVnID0gJmx0OzMmZ3Q7OwomIzQzOwkJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJCX07CiYjNDM7CX07CiYjNDM7CiYjNDM7CXhwY3NfZ21hYzBfY2xrOiB4cGNzLWdtYWMwLWNsb2NrIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWNsb2NrJiMzNDs7CiYjNDM7CQljbG9jay1mcmVxdWVuY3kgPSAmbHQ7MTI1MDAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpJiMzNDs7CiYjNDM7CQkjY2xvY2stY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CX07CiYjNDM7CiYjNDM7CXhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWNsb2NrJiMzNDs7CiYjNDM7CQljbG9jay1mcmVxdWVuY3kgPSAmbHQ7MTI1MDAwMDAwJmd0OzsKJiM0MzsJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICYjMzQ7Y2xrX2dtYWMxX3hwY3NfbWlpJiMzNDs7CiYjNDM7CQkjY2xvY2stY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CX07CiYjNDM7CiAJcGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHsKIAkJY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXBpcGUtcGh5LWdyZiYjMzQ7LCAmIzM0O3N5c2NvbiYjMzQ7OwogCQlyZWcgPSAmbHQ7MHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMCZndDs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwppbmRleCBlM2RkNWFkZGE1YWNhZi4uNTA4OGFjYzA2OTgyZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwpAQCAtMTcwLDYgJiM0MzsxNzAsNyBAQCBjb25maWcgRFdNQUNfUk9DS0NISVAKIAlkZWZhdWx0IEFSQ0hfUk9DS0NISVAKIAlkZXBlbmRzIG9uIE9GICZhbXA7JmFtcDsgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQogCXNlbGVjdCBNRkRfU1lTQ09OCiYjNDM7CXNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKaW5kZXggYjhkNDY3YmE2ZDcyZDMuLjA4MTMyM2MzMmJjYzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKQEAgLTU3MiwxMyAmIzQzOzU3Miw0NyBAQCBzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCkKIAlwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtuZWVkc19yZXNldCA9IHRydWU7CiB9CiAKJiM0MztzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlOwomIzQzOwlzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7CiYjNDM7CWludCBhZGRyOwomIzQzOwomIzQzOwlkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LSZndDtkZXZpY2UpOwomIzQzOwomIzQzOwlpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgJiMzNDtwY3MtaGFuZGxlJiMzNDspKSB7CiYjNDM7CQlwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJCXhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7CiYjNDM7CQlmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWFkZHIgPSBmZnMocHJpdi0mZ3Q7cGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2spIC0gMTsKJiM0MzsJCXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtJmd0O21paSwgYWRkcik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwl4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtJmd0O3BsYXQtJmd0O211bHRfZmFjdF8xMDBucyk7CiYjNDM7CiYjNDM7CXByaXYtJmd0O2h3LSZndDt4cGNzID0geHBjczsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJaWYgKCFwcml2LSZndDtody0mZ3Q7eHBjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJeHBjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0MzsJcHJpdi0mZ3Q7aHctJmd0O3hwY3MgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKLQkvKiBwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtoYXNfeHBjcyBoYXMgYmVlbiBzZXQgdHJ1ZSwgc28gdGhlcmUKLQkgKiBzaG91bGQgYWx3YXlzIGJlIGFuIFhQQ1MuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGFsd2F5cwotCSAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuCi0JICovCiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAlyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LSZndDtody0mZ3Q7eHBjcyk7CiB9CiAKQEAgLTcwMiw2ICYjNDM7NzM2LDggQEAgc3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCSAgICBwbGF0LSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHsKIAkJcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTsKIAkJcGxhdC0mZ3Q7ZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJcGxhdC0mZ3Q7cGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0OwomIzQzOwkJcGxhdC0mZ3Q7cGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0OwogCQlwbGF0LSZndDtzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCmluZGV4IDE5ZjM0ZTE4YmZlZjJjLi45YWYzMmMyNmY5YzE0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYwpAQCAtODEsOCAmIzQzOzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQltaWljX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKTsKJiM0MzsJaWYgKCFwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MgPSBOVUxMOwogfQogCiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwppbmRleCA4ZDcwNDJlNjg5MjYxOS4uZWNhNDgyYjRiNmJmYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwpAQCAtMjAsNiAmIzQzOzIwLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDsKQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7CiAJdm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTsKIAl2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTsKJiM0MzsJdm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwogCWludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTsKIAl2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwpAQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHsKIAlib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwOwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCWJvb2wgcGhwX2dyZl9yZXF1aXJlZDsKIAlib29sIHJlZ3NfdmFsaWQ7CiAJdTMyIHJlZ3NbXTsKQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHsKIAlib29sIGludGVncmF0ZWRfcGh5OwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCiAJc3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7CiAJaW50IG51bV9jbGtzOwpAQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7CiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMQkJMHgwMzhjCiAKIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSAmYW1wOyZhbXA7IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqLwomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJCQlHUkZfQ0xSX0JJVCg3KQomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkJCUdSRl9CSVQoNykKICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMCQkJR1JGX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSCQlHUkZfQ0xSX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFCQlHUkZfQklUKDEpCkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdiwKIAkJICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7CiAKIAlyZWdtYXBfd3JpdGUoYnNwX3ByaXYtJmd0O2dyZiwgY29uMSwKJiM0MzsJCSAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHwKIAkJICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHwKIAkJICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fc2dtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiYjNDM7ewomIzQzOwl1MzIgY29uMTsKJiM0MzsKJiM0MzsJY29uMSA9IChic3BfcHJpdi0mZ3Q7aWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOgomIzQzOwkJCQkgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTsKJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGJzcF9wcml2LSZndDtncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7CiAJLmluaXQgPSByazM1NjhfaW5pdCwKIAkuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSwKJiM0MzsJLnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksCiYjNDM7CiAJLnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLAogCiAJLmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSwKIAogCS5zdXBwb3J0c19ybWlpID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSwKIAogCS5yZWdzX3ZhbGlkID0gdHJ1ZSwKIAkucmVncyA9IHsKQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LSZndDtkZXZpY2UtJmd0O29mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwomIzQzOwlwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJaWYgKCFwY3Nfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi0mZ3Q7ZGV2aWNlLCBwY3Nfbm9kZSk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ub2RlKTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IE5VTEw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQkJCQkgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCwKIAkJCQkJICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcykKQEAgLTEzMzAsNiAmIzQzOzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiAJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3JnbWlpID0gb3BzLSZndDtzdXBwb3J0c19yZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3JnbWlpOwogCWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpID0gb3BzLSZndDtzdXBwb3J0c19ybWlpIHx8ICEhb3BzLSZndDtzZXRfdG9fcm1paTsKJiM0MzsJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpID0gb3BzLSZndDtzdXBwb3J0c19zZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3NnbWlpOwogCiAJaWYgKG9wcy0mZ3Q7aW5pdCkgewogCQlyZXQgPSBvcHMtJmd0O2luaXQoYnNwX3ByaXYpOwpAQCAtMTM2MSw2ICYjNDM7MTQxOSwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfY2hlY2tfb3BzKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoIWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWlmICghYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LAogCQkJJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWQmIzM0OywgYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CkBAIC0xMzc5LDYgJiM0MzsxNDQxLDkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwlpZiAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiYjNDM7CQlnb3RvIHNldF9tb2RlOwomIzQzOwogCXJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CkBAIC0xNDE2LDcgJiM0MzsxNDgxLDggQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiAJCX0KIAl9CiAKLQkvKnJtaWkgb3IgcmdtaWkqLwomIzQzO3NldF9tb2RlOgomIzQzOwkvKiBybWlpLCByZ21paSwgc2dtaWkgKi8KIAlzd2l0Y2ggKGJzcF9wcml2LSZndDtwaHlfaWZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSToKIAkJZGV2X2luZm8oZGV2LCAmIzM0O2luaXQgZm9yIFJHTUlJXG4mIzM0Oyk7CkBAIC0xNDQ3LDYgJiM0MzsxNTEzLDExIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoYnNwX3ByaXYtJmd0O29wcy0mZ3Q7c2V0X3RvX3JtaWkpCiAJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fcm1paShic3BfcHJpdik7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWRldl9pbmZvKGRldiwgJiMzNDtpbml0IGZvciBTR01JSVxuJiMzNDspOwomIzQzOwkJaWYgKGJzcF9wcml2LSZndDtvcHMtJmd0O3NldF90b19zZ21paSkKJiM0MzsJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fc2dtaWkoYnNwX3ByaXYpOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2VycihkZXYsICYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXG4mIzM0Oyk7CiAJfQpAQCAtMTQ4Niw2ICYjNDM7MTU1Nyw5IEBAIHN0YXRpYyB2b2lkIHJrX2dldF9pbnRlcmZhY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCAqYnNwX3ByaXYsCiAKIAlpZiAocmstJmd0O3N1cHBvcnRzX3JtaWkpCiAJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSwgaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CWlmIChyay0mZ3Q7c3VwcG9ydHNfc2dtaWkpCiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTsKIH0KIAogc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSwKQEAgLTE2MDIsNiAmIzQzOzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcGxhdF9kYXQtJmd0O3N1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7CiAJcGxhdF9kYXQtJmd0O3Jlc3VtZSA9IHJrX2dtYWNfcmVzdW1lOwogCiYjNDM7CWlmIChwbGF0X2RhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHsKJiM0MzsJCS8qIFNHTUlJIGNsb2NrIGFsd2F5cyBydW5zIGF0IDEyNSBNSHogKi8KJiM0MzsJCXBsYXRfZGF0LSZndDtzZXRfY2xrX3R4X3JhdGUgPSBOVUxMOwomIzQzOwomIzQzOwkJLyogU0dNSUkgcmVxdWlyZXMgYSBQQ1MgKi8KJiM0MzsJCXBsYXRfZGF0LSZndDtkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQlwbGF0X2RhdC0mZ3Q7cGNzX2luaXQgPSBya19wY3NfaW5pdDsKJiM0MzsJCXBsYXRfZGF0LSZndDtwY3NfZXhpdCA9IHJrX3Bjc19leGl0OwomIzQzOwkJcGxhdF9kYXQtJmd0O3NlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzOwomIzQzOwl9CiYjNDM7CiAJcGxhdF9kYXQtJmd0O2JzcF9wcml2ID0gcmtfZ21hY19zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7CiAJaWYgKElTX0VSUihwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYpKQogCQlyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCmluZGV4IDEzNjM0OTY1YmMxOWExLi4wMWRmNDc3NmVkYjNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYwpAQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAKIHN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewotCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCi0JCW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ6bjFfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKaW5kZXggMWQ3ZjBhNTdkMjg4OTcuLjZkNGJjMWZlOGY3NTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jCkBAIC01MzksOCAmIzQzOzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwppbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwpAQCAtNDI2LDM2ICYjNDM7NDI2LDE1IEBAIGludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7Ci0Jc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRldm5vZGUsICpwY3Nub2RlOwotCXN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDsKLQlpbnQgYWRkciwgcmV0OwotCi0JZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi0mZ3Q7ZGV2aWNlKTsKLQotCWlmIChwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdCkgewotCQlyZXQgPSBwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdChwcml2KTsKLQl9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7KSkgewotCQlwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKLQkJeHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTsKLQkJZndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7Ci0JCXJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTsKLQl9IGVsc2UgaWYgKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEgJmFtcDsmYW1wOwotCQkgICBwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtwY3NfbWFzaykgewotCQlhZGRyID0gZmZzKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrKSAtIDE7Ci0JCXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtJmd0O21paSwgYWRkcik7Ci0JCXJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTsKLQl9IGVsc2UgewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoIXByaXYtJmd0O3BsYXQtJmd0O3Bjc19pbml0KQogCQlyZXR1cm4gMDsKLQl9CiAKJiM0MzsJcmV0ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQocHJpdik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi0mZ3Q7ZGV2aWNlLCByZXQsICYjMzQ7Tm8geFBDUyBmb3VuZFxuJiMzNDspOwogCi0JaWYgKHhwY3MpCi0JCXhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi0mZ3Q7cGxhdC0mZ3Q7bXVsdF9mYWN0XzEwMG5zKTsKLQotCXByaXYtJmd0O2h3LSZndDt4cGNzID0geHBjczsKLQogCXJldHVybiAwOwogfQogCkBAIC00NjMsMTQgJiM0Mzs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCi0JaWYgKHByaXYtJmd0O3BsYXQtJmd0O3Bjc19leGl0KQotCQlwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdChwcml2KTsKLQotCWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CWlmICghcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQpCiAJCXJldHVybjsKIAotCXhwY3NfZGVzdHJveShwcml2LSZndDtody0mZ3Q7eHBjcyk7Ci0JcHJpdi0mZ3Q7aHctJmd0O3hwY3MgPSBOVUxMOwomIzQzOwlwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdChwcml2KTsKIH0KIAogc3RydWN0IHN0bW1hY19jbGtfcmF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnCmluZGV4IGU0MTdmZDY2ZjY2MGFkLi4zMjg2YmM5M2U3MDI2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWcKQEAgLTEyLDYgJiM0MzsxMiwyOCBAQCBjb25maWcgUENTX1hQQ1MKIAkgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5cwogCSAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLgogCiYjNDM7aWYgUENTX1hQQ1MKJiM0MzsKJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk0KJiM0MzsJdHJpc3RhdGUgJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0JiMzNDsKJiM0MzsJZGVmYXVsdCBQQ1NfWFBDUwomIzQzOwloZWxwCiYjNDM7CSAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnkKJiM0MzsJICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtCiYjNDM7CSAgZGF0YSBmb3Igc2V0dXAuCiYjNDM7CiYjNDM7CSAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS4KJiM0MzsKJiM0Mztjb25maWcgUENTX1hQQ1NfUk9DS0NISVAKJiM0MzsJdHJpc3RhdGUgJiMzNDtSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydCYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIFJvY2tjaGlwIFNvQyB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuCiYjNDM7CiYjNDM7ZW5kaWYgIyBQQ1NfWFBDUwomIzQzOwogY29uZmlnIFBDU19MWU5YCiAJdHJpc3RhdGUKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKaW5kZXggNGY3OTIwNjE4YjkwMDUuLmM4MDliN2Y5NDJhNTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCkBAIC0xLDEwICYjNDM7MSw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiAjIE1ha2VmaWxlIGZvciBMaW51eCBQQ1MgZHJpdmVycwogCi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUykJOj0gcGNzLXhwY3MubyBwY3MteHBjcy1wbGF0Lm8gXAotCQkJCSAgIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm8KLQotb2JqLSQoQ09ORklHX1BDU19YUENTKQkJJiM0Mzs9IHBjc194cGNzLm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1MpICYjNDM7PSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUExBVEZPUk0pICYjNDM7PSBwY3MteHBjcy1wbGF0Lm8KJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICYjNDM7PSBwY3MteHBjcy1yay5vCiBvYmotJChDT05GSUdfUENTX0xZTlgpCQkmIzQzOz0gcGNzLWx5bngubwogb2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpCSYjNDM7PSBwY3MtbXRrLWx5bnhpLm8KIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKQkmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lZDk2OWEzOGQ1NDRkNQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jCkBAIC0wLDAgJiM0MzsxLDUyNiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyoKJiM0MzsgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXIKJiM0MzsgKgomIzQzOyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pbgomIzQzOyAqCiYjNDM7ICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnQKJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYXRvbWljLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Nsay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW9wb2xsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mX3BsYXRmb3JtLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fZG9tYWluLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2l6ZXMuaCZndDsKJiM0MzsKJiM0MzsjaW5jbHVkZSAmIzM0O3Bjcy14cGNzLmgmIzM0OwomIzQzOwomIzQzO3N0cnVjdCBkd194cGNzX3JrIHsKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKJiM0MzsJc3RydWN0IG1paV9idXMgKmJ1czsKJiM0MzsJdm9pZCBfX2lvbWVtICpyZWdfYmFzZTsKJiM0MzsJc3RydWN0IHBoeSAqc2VyZGVzX3BoeTsKJiM0MzsJc3RydWN0IGNsayAqY3NyX2NsazsKJiM0MzsJc3RydWN0IGNsayAqZWVlX2NsazsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJcmV0dXJuIEZJRUxEX1BSRVAoMHg3MDAwMCwgZGV2KSB8IEZJRUxEX1BSRVAoMHhmZmZmLCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJcHRyZGlmZl90IGNzcjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7CiYjNDM7CiYjNDM7CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHJlYWRsKHB4cGNzLSZndDtyZWdfYmFzZSAmIzQzOyAoY3NyICZsdDsmbHQ7IDIpKSAmYW1wOyAweGZmZmY7CiYjNDM7CiYjNDM7CXBtX3J1bnRpbWVfcHV0KCZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2Rldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJcHRyZGlmZl90IGNzcjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7CiYjNDM7CiYjNDM7CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXdyaXRlbCh2YWwsIHB4cGNzLSZndDtyZWdfYmFzZSAmIzQzOyAoY3NyICZsdDsmbHQ7IDIpKTsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9wdXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTEJMgomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTIJMwomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTMJNAomIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX1BNQVBNRAk2CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJCTcKJiM0MzsKJiM0MztzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcikKJiM0Mzt7CiYjNDM7CXJldHVybiAhKGFkZHIgJmx0OyAwIHx8IGFkZHIgJmd0OyAzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGRldikgewomIzQzOwljYXNlIE1ESU9fTU1EX1BNQVBNRDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwomIzQzOwljYXNlIE1ESU9fTU1EX1ZFTkQyOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOWElPOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoYWRkcikgewomIzQzOwljYXNlIDA6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJY2FzZSAxOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxOwomIzQzOwljYXNlIDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7CiYjNDM7CWNhc2UgMzoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoZGV2KSB7CiYjNDM7CWNhc2UgTURJT19NTURfUE1BUE1EOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7CiYjNDM7CWNhc2UgTURJT19NTURfVkVORDI6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogV3JpdGFibGUgb25seSBvbiBNSUkgKi8KJiM0MzsJc3dpdGNoIChyZWcpIHsKJiM0MzsJY2FzZSBEV19WUl9NSUlfQU5fQ1RSTDoKJiM0MzsJY2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDA6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDE6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3dpdGNoIChhZGRyKSB7CiYjNDM7CWNhc2UgMDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJOwomIzQzOwljYXNlIDE6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7CiYjNDM7CWNhc2UgMjoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMjsKJiM0MzsJY2FzZSAzOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwlpbnQgZGV2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBNRElPX01NRF9WRU5EMiwgcmVnKTsKJiM0MzsJaWYgKGRldiAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gMHhmZmZmOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwlpbnQgZGV2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAweGZmZmY7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3JlYWRfcmVnKHB4cGNzLCBkZXYsIHJlZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcsIHUxNiB2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtJmd0O3ByaXY7CiYjNDM7CiYjNDM7CWlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZGV2ID0geHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgZHdfeHBjc19yayAqeHBjc19ya19jcmVhdGVfZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzOwomIzQzOwomIzQzOwlweHBjcyA9IGRldm1fa3phbGxvYygmYW1wO3BkZXYtJmd0O2Rldiwgc2l6ZW9mKCpweHBjcyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXB4cGNzKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtwZGV2ID0gcGRldjsKJiM0MzsKJiM0MzsJZGV2X3NldF9kcnZkYXRhKCZhbXA7cGRldi0mZ3Q7ZGV2LCBweHBjcyk7CiYjNDM7CiYjNDM7CXJldHVybiBweHBjczsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtzZXJkZXNfcGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgJiMzNDtzZXJkZXMmIzM0Oyk7CiYjNDM7CWlmIChJU19FUlIocHhwY3MtJmd0O3NlcmRlc19waHkpKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLSZndDtzZXJkZXNfcGh5KSwKJiM0MzsJCQkJCSYjMzQ7RmFpbGVkIHRvIGdldCBTZXJEZXMgUEhZXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsKJiM0MzsJcGh5X3Bvd2VyX29mZihweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CXBoeV9leGl0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsKJiM0MzsJZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24oc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBwaHlfaW5pdChweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBpbml0IFNlckRlcyBQSFlcbiYjMzQ7KTsKJiM0MzsJCWdvdG8gcG1fZG9tYWluOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9wb3dlcl9vbihweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXG4mIzM0Oyk7CiYjNDM7CQlnb3RvIHNlcmRlc19waHk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzOwomIzQzO3NlcmRlc19waHk6CiYjNDM7CXBoeV9leGl0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MztwbV9kb21haW46CiYjNDM7CWRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLSZndDtwZGV2OwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3BkZXYtJmd0O2RldjsKJiM0MzsJc3RydWN0IHJlc291cmNlICpyZXM7CiYjNDM7CiYjNDM7CXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CiYjNDM7CWlmICghcmVzKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtObyByZWctc3BhY2UgZm91bmRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChyZXNvdXJjZV9zaXplKHJlcykgJmx0OyBTWl8yTSkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7SW52YWxpZCByZWctc3BhY2Ugc2l6ZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcHhwY3MtJmd0O3JlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7cmVnX2Jhc2UpKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIFBUUl9FUlIocHhwY3MtJmd0O3JlZ19iYXNlKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGF0YTsKJiM0MzsKJiM0MzsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLSZndDtlZWVfY2xrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfY2xrKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcHhwY3MtJmd0O2Nzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAmIzM0O2NzciYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7Y3NyX2NsaykpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtJmd0O2Nzcl9jbGspLAomIzQzOwkJCQkJICYjMzQ7RmFpbGVkIHRvIGdldCBDU1IgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CiYjNDM7CXJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgJiMzNDtlZWUmIzM0Oyk7CiYjNDM7CWlmIChJU19FUlIocHhwY3MtJmd0O2VlZV9jbGspKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLSZndDtlZWVfY2xrKSwKJiM0MzsJCQkJCSAmIzM0O0ZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy0mZ3Q7ZWVlX2Nsayk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcbiYjMzQ7LCByZXQpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJc3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpOwomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApOwomIzQzOwlpZiAoIWJ1cykKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlidXMtJmd0O25hbWUgPSAmIzM0O1JvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjMmIzM0OzsKJiM0MzsJYnVzLSZndDtyZWFkID0geHBjc19ya19yZWFkX2MyMjsKJiM0MzsJYnVzLSZndDt3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyOwomIzQzOwlidXMtJmd0O3JlYWRfYzQ1ID0geHBjc19ya19yZWFkX2M0NTsKJiM0MzsJYnVzLSZndDt3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTsKJiM0MzsJYnVzLSZndDtwaHlfbWFzayA9IH4wOwomIzQzOwlidXMtJmd0O3BhcmVudCA9IGRldjsKJiM0MzsJYnVzLSZndDtwcml2ID0gcHhwY3M7CiYjNDM7CiYjNDM7CXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwKJiM0MzsJCSAmIzM0O3JvY2tjaGlwX2R3eHBjcy0leCYjMzQ7LCBhdG9taWNfaW5jX3JldHVybigmYW1wO2lkKSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0CiYjNDM7CSAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnMKJiM0MzsJICogYWNjZXNzLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlweHBjcy0mZ3Q7YnVzID0gYnVzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUihweHBjcyk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBYUENTIG1heSBiZSBhdHRhY2hlZCB0byBhIHBvd2VyIGRvbWFpbiAoZS5nLiBQRF9QSVBFKS4gVGhlIGRvbWFpbgomIzQzOwkgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGwKJiM0MzsJICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLgomIzQzOwkgKgomIzQzOwkgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsCiYjNDM7CSAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX2luaXRfcmVzKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wOwomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwl1MzIgcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVnJiMzNDssICZhbXA7cG9ydCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiYjNDM7CiYjNDM7CS8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovCiYjNDM7CXBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApOwomIzQzOwlpZiAoIXBjc19ucCkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHBjc19ucCk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ucCk7CiYjNDM7CWlmICghcGRldikKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwomIzQzOwlweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwomIzQzOwlpZiAoIXB4cGNzIHx8ICFweHBjcy0mZ3Q7YnVzKSB7CiYjNDM7CQlwdXRfZGV2aWNlKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLSZndDtidXMsIChpbnQpcG9ydCk7CiYjNDM7CWlmIChJU19FUlIoeHBjcykpIHsKJiM0MzsJCXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwkJcmV0dXJuIHhwY3M7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2aWNlX2xpbmtfYWRkKGRldiwgJmFtcDtwZGV2LSZndDtkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUik7CiYjNDM7CXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4geHBjczsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CWNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy0mZ3Q7Y3NyX2Nsayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtJmd0O2Nzcl9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgeHBjc19ya19wbV9vcHMgPSB7CiYjNDM7CVNFVF9SVU5USU1FX1BNX09QUyh4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZCwKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLAomIzQzOwkJCSAgIE5VTEwpCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjcyYjMzQ7IH0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfSwKJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHsKJiM0MzsJLnByb2JlID0geHBjc19ya19wcm9iZSwKJiM0MzsJLmRyaXZlciA9IHsKJiM0MzsJCS5uYW1lID0gJiMzNDtya194cGNzLWR3eHBjcyYjMzQ7LAomIzQzOwkJLnBtID0gJmFtcDt4cGNzX3JrX3BtX29wcywKJiM0MzsJCS5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLAomIzQzOwl9LAomIzQzO307CiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKaW5kZXggZTY5ZmEyZjBhMGU4ZDguLmNmMzcwYmEyNDdjYWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwpAQCAtODE2LDYgJiM0Mzs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAlpZiAocmV0ICZsdDsgMCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwkvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqLwomIzQzOwlyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJaWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkKIAkJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsCiAJCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpOwpAQCAtODg0LDcgJiM0Mzs4ODksNyBAQCBzdGF0aWMgaW50IHhwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleChzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAogCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpIHsKIAkJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsCi0JCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpOwomIzQzOwkJCQkgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTsKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTEwNTgsNiAmIzQzOzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKIAogCS8qIFJlc2V0IGxpbmtfc3RhdGUgKi8KIAlzdGF0ZS0mZ3Q7bGluayA9IGZhbHNlOwomIzQzOwlzdGF0ZS0mZ3Q7YW5fY29tcGxldGUgPSBmYWxzZTsKIAlzdGF0ZS0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjsKIAlzdGF0ZS0mZ3Q7cGF1c2UgPSAwOwpAQCAtMTA2OSw2ICYjNDM7MTA3NSw4IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLAogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gcmV0OwogCiYjNDM7CXN0YXRlLSZndDthbl9jb21wbGV0ZSA9IHJldCAmYW1wOyBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFI7CiYjNDM7CiAJaWYgKHJldCAmYW1wOyBEV19WUl9NSUlfQzM3X0FOU0dNX1NQX0xOS1NUUykgewogCQlpbnQgc3BlZWRfdmFsdWU7CiAKQEAgLTEwODYsNyAmIzQzOzEwOTQsMjQgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJCQlzdGF0ZS0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7CiAJCWVsc2UKIAkJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfSEFMRjsKLQl9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHsKJiM0MzsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi8KJiM0MzsJaWYgKHN0YXRlLSZndDthbl9jb21wbGV0ZSkKJiM0MzsJCXhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7CiYjNDM7CiYjNDM7CWlmICh4cGNzLSZndDtpbmZvLnBtYSAhPSBXWF9UWEdCRV9YUENTX1BNQV8xMEdfSUQpIHsKJiM0MzsJCS8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqLwomIzQzOwkJaWYgKHN0YXRlLSZndDthbl9jb21wbGV0ZSkKJiM0MzsJCQl4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULAomIzQzOwkJCQkgICAgQk1DUl9BTlJFU1RBUlQpOwomIzQzOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHsKIAkJaW50IHNwZWVkLCBkdXBsZXg7CiAKIAkJc3RhdGUtJmd0O2xpbmsgPSB0cnVlOwpAQCAtMTExMiw3ICYjNDM7MTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLAogCQllbHNlIGlmIChkdXBsZXggJmFtcDsgQURWRVJUSVNFXzEwMDBYSEFMRikKIAkJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfSEFMRjsKIAotCQl4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApOwomIzQzOwkJcmV0dXJuIDA7CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jCmluZGV4IDJiMGYxNTJmNTQ3MDkxLi5mZjI5MGJjMTg1ODlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMKQEAgLTE4Niw2ICYjNDM7MTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV94cGNzX3BoeV9yZWFkeTsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDsKJiM0MzsJc3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcwX3BvcnRfZW47CiAJc3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuOwogfTsKQEAgLTIxMiw2ICYjNDM7MjEzLDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiB7CiAJYm9vbCBlbmFibGVfc3NjOwogCWJvb2wgZXh0X3JlZmNsazsKIAlzdHJ1Y3QgY2xrICpyZWZjbGs7CiYjNDM7CXUzMiBzZ21paV9tYWNfc2VsOwogfTsKIAogc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsCkBAIC0zNzUsNiAmIzQzOzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5CiAKIAlwcml2LSZndDtleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCAmIzM0O3JvY2tjaGlwLGV4dC1yZWZjbGsmIzM0Oyk7CiAKJiM0MzsJcHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCA9IDA7CiYjNDM7CWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICYjMzQ7cm9ja2NoaXAsc2dtaWktbWFjLXNlbCYjMzQ7LCAmYW1wO3ByaXYtJmd0O3NnbWlpX21hY19zZWwpOwomIzQzOwogCXByaXYtJmd0O3BoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsICYjMzQ7cGh5JiMzNDspOwogCS8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi8KIAlpZiAoUFRSX0VSUihwcml2LSZndDtwaHlfcnN0KSA9PSAtRU5PRU5UKQpAQCAtODczLDYgJiM0Mzs4NzgsOCBAQCBzdGF0aWMgaW50IHJrMzU2OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQogCQlicmVhazsKIAogCWNhc2UgUEhZX1RZUEVfU0dNSUk6CiYjNDM7CQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BpcGVfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV9zZ21paV9tYWNfc2VsLAomIzQzOwkJCQkJcHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCAmZ3Q7IDApOwogCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BpcGVfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGh5X2dyZiwgJmFtcDtjZmctJmd0O3BpcGVfcGh5bW9kZV9zZWwsIHRydWUpOwogCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtJmd0O3BoeV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3NlbF9xc2dtaWksIHRydWUpOwpAQCAtOTg0LDYgJiM0Mzs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7CiAJLmNvbjNfZm9yX3NhdGEJCT0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSwKIAkvKiBwaXBlLWdyZiAqLwogCS5waXBlX2NvbjBfZm9yX3NhdGEJPSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LAomIzQzOwkucGlwZV9zZ21paV9tYWNfc2VsCT0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSwKIAkucGlwZV94cGNzX3BoeV9yZWFkeQk9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sCiAJLnUzb3RnMF9wb3J0X2VuCQk9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSwKIAkudTNvdGcxX3BvcnRfZW4JCT0geyAweDAxNDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApAQCAtMCwwICYjNDM7MSwxMSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCiYjNDM7I2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0gKJiM0MzsjZGVmaW5lIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEFuYWx5c2lzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjaW5nIHN1cHBvcnQgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1MgKFhQQ1MpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcywgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCkZpcnN0bHksIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBkcml2ZXIsIGBwY3MteHBjcy1yay5jYCwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZXNlIGFyZSBhIHBhaW4gaW4gdGhlIG5lY2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSB0aGV5IHVzdWFsbHkgcmVseSBoZWF2aWx5IG9uIHRoZSBEZXZpY2UgVHJlZS4gVW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXprYWxsZXItc3BlY2lmaWMgcHNldWRvLWRldmljZSwgb3IgdGhlIGRldmljZSB0cmVlIGlzIGFscmVhZHkgYXZhaWxhYmxlLCB3aGljaCBpcyB1bmxpa2VseSBpbiBhIGdlbmVyaWMgZW52aXJvbm1lbnQsIGl0JiMzOTtzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCB0aGlzIGRyaXZlci4gU3l6a2FsbGVyICpjb3VsZCogdHJ5IHRvIGluamVjdCB0aGUgcGxhdGZvcm0gZGV2aWNlIHdpdGggYHN5el9kZXZfaW5pdGAgb3IgbW9kaWZ5IHRoZSBEVCBpZiBzdXBwb3J0ZWQsIGJ1dCB0eXBpY2FsbHksIHN5emthbGxlciBwcmVmZXJzIHNpbXBsZXIsIG1vcmUgZGlyZWN0IGFwcHJvYWNoZXMgZm9yIG5ldHdvcmsgZHJpdmVycyBsaWtlIHZpcnR1YWwgaW50ZXJmYWNlcy4gSW4gdGhpcyBjYXNlLCBgcGNzLXhwY3MtcmsuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggYSBjb21wYXRpYmxlIHN0cmluZywgYW5kIGl0cyBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbiB0aGF0IGluY2x1ZGVzIGdldHRpbmcgYSAmIzM0O3NlcmRlcyYjMzQ7IHBoeSBhbmQgcmVzb3VyY2VzLiBXaXRob3V0IHRoZSByaWdodCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IGZhaWwuIFRoZSBkZXZpY2UgdHJlZSB3aWxsIG5lZWQgdG8gZXhpc3QgYW5kIGhhdmUgdGhlIGNvcnJlY3QgZW50cmllcyBmb3IgdGhlIHBsYXRmb3JtIGRyaXZlciB0byBzdWNjZWVkLCB3aGljaCBpcyB1bmxpa2VseSBpbiBtb3N0IHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4KClNlY29uZGx5LCBhbmQgbW9yZSBpbnRlcmVzdGluZ2x5LCB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgYHN0bW1hY2AgZHJpdmVyLiBUaGlzIGlzIGEgZ2VuZXJpYyBkcml2ZXIsIHNvIGl0IGNvdWxkIGhhdmUgZ29vZCBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoZXJlIGlzIGEgcmVmYWN0b3JpbmcgaGFwcGVuaW5nIHdoZXJlIGBzdG1tYWNfcGNzX3NldHVwYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIHRoaXMgYWZmZWN0cyBob3cgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFRoZSBwYXRjaCBkZWxlZ2F0ZXMgdGhlIGluaXRpYWxpemF0aW9uIHRvIGBwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdGAuCgpUaGUgYHN0bW1hY2AgY2hhbmdlcyBsZWFkIHRvIHRoZSBgZHdtYWMtaW50ZWwuY2AgZmlsZSBnZXR0aW5nIG1vZGlmaWVkLiBUaGlzIGZpbGUgaXMgZm9yIEludGVsIFBDSSBkZXZpY2VzLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcgYmVjYXVzZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzISBJZiB0aGUgSW50ZWwgZHJpdmVyIGlzIGVuYWJsZWQsIGFuZCBzeXprYWxsZXIgY2FuIGluamVjdCBhIHN1aXRhYmxlIEludGVsIFBDSSBkZXZpY2UsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gV2UmIzM5O2xsIGJlIGFibGUgdG8gcHJvYmUgYGludGVsX21nYmVfcGNzX2luaXRgIGFuZCBmcm9tIHRoZXJlIHRoZSBgc3RtbWFjX3Bjc19zZXR1cGAgZnVuY3Rpb25zLiBUaGlzIHdvdWxkIG1lYW4gcmVhY2hpbmcgYHhwY3NfY3JlYXRlX21kaW9kZXZgLiBUaGUgUENJIGRldmljZSBlbXVsYXRpb24vaW5qZWN0aW9uIGlzIGltcG9ydGFudCBoZXJlLgoKVGhlcmUmIzM5O3Mgc29tZSBmdW5jdGlvbmFsIGxvZ2ljIGFzIHdlbGwuIFRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBwY3MteHBjcy5jYCwgc3BlY2lmaWNhbGx5IGZ1bmN0aW9ucyBsaWtlIGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhgLCBhbmQgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAuIFRoZXNlIGFyZSBnZW5lcmljIFBDUyBkcml2ZXIgZnVuY3Rpb25zIGFuZCwgc2luY2UgSW50ZWwgbUdCRSB1c2VzIFNHTUlJIG9yIDEwMDBCQVNFWCwgdGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBJbnRlbCBtR0JFIGRyaXZlciwgZXNwZWNpYWxseSBpZiB0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCBTR01JSSBvciAxMDAwQkFTRVggbW9kZXMgYXJlIGFjdGl2ZS4gVGhlc2UgbW9kaWZpY2F0aW9ucyBpbiBgcGNzLXhwY3MuY2Agc2hvdWxkIGJlIHRoZSBtYWluIGFyZWEgb2YgZm9jdXMuIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgIGlzIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgcGh5bGluaywgc28gdGhleSB3aWxsIGJlIGV4ZXJjaXNlZCBkdXJpbmcgZGV2aWNlIG9wZXJhdGlvbi4KClNvLCB0aGUga2V5IGhlcmUgaXMgUENJIGZ1enppbmcsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIEludGVsIG1HQkUgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApLiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBvciBlbXVsYXRlIGFuIEludGVsIFBDSSBkZXZpY2UsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIHJpZ2h0LCB3ZSBjYW4gZXhlcmNpc2UgdGhvc2UgZ2VuZXJpYyBgcGNzLXhwY3MuY2AgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gYmUgc3VyZSB0aGUgcmlnaHQgY29uZmlncyBhcmUgc2V0LCBidXQgaXQgbG9va3MgbGlrZSB3ZSB3aWxsIG5lZWQ6CgoqICAgYENPTkZJR19TVE1NQUNfRVRIYAoqICAgYENPTkZJR19EV01BQ19JTlRFTGAKKiAgIGBDT05GSUdfUENTX1hQQ1NgCiogICBgQ09ORklHX1BDSWAKCkl0IGxvb2tzIGxpa2UgdGhlIGBEV01BQ19JTlRFTGAgY29uZmlnIHNlbGVjdHMgYFBDU19YUENTYC4gTGV0JiMzOTtzIGdldCB0byB3b3JrIHdpdGggdGVzdGluZyB0aGVzZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9NzIxPXN0YXRpYyB2b2lkIHhwY3NfcHJlX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy03NDktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzo3NTA6c3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTc1MS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz05MTY9c3RhdGljIGludCB4cGNzX2RvX2NvbmZpZyhzdHJ1Y3QgZHdfeHBjcyAqeHBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDctXHRjYXNlIERXX0FOX0MzN19TR01JSTpcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjk0ODpcdFx0cmV0ID0geHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoeHBjcywgbmVnX21vZGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtOTQ5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODkxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgc28gdGhlIGJyZWFkY3J1bWIgdHJhaWwgc3RhcnRzIHdpdGggYHhwY3NfZG9fY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICp3aXRoaW4qIHRoYXQgY2FsbC4KCk15IG5leHQgc3RvcCBpcyBjbGVhcmx5IGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgLiBUaGlzIGxvb2tzIGxpa2Ugd2hlcmUgd2UmIzM5O3JlIGRpZ2dpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3RhdGUgcmVsYXRlZCB0byBTR01JSSDigJMgYSBwYXJ0aWN1bGFyIHR5cGUgb2Ygc2lnbmFsaW5nIGludGVyZmFjZSwgbW9zdCBsaWtlbHksIGJhc2VkIG9uIHRoZSBuYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgcHVsbGluZyB0aGF0IHN0YXRlLCBmcm9tIHdoZXJlLCBhbmQgaG93IGl0IGluZm9ybXMgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGl0IHB1bGxpbmcgZnJvbSByZWdpc3RlcnMsIG1lbW9yeSwgYSBjb25maWcgZmlsZT8gSXMgaXQgY2hlY2tpbmcgZm9yIGVycm9ycz8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZXMgYW5kIGFueSBzdGF0ZSB2YXJpYWJsZXMgdXNlZCBhcyBhIHJlc3VsdCBvZiB0aGF0IGNhbGwgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwY3NfZ2V0X3N0YXRlX2MzN19zZ21paSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz05ODY9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jNzMoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTA1OC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjEwNTk6c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMDYwLVx0XHRcdFx0ICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTEyMDQ9c3RhdGljIHZvaWQgeHBjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMjI1LVx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI2Olx0XHRyZXQgPSB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoeHBjcywgc3RhdGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTIyNy1cdFx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjgtXHRcdFx0ZGV2X2VycihcdTAwMjZ4cGNzLVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDslcyByZXR1cm5lZCAlcGVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI5Olx0XHRcdFx0XCYjMzQ7eHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpXCYjMzQ7LCBFUlJfUFRSKHJldCkpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTIzMC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NjYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUENTIFN0YXRlIFJldHJpZXZhbCoqCgpSaWdodCwgc28gdGhpcyBpcyBjb21pbmcgZnJvbSBhIGNhbGwgdG8gYHhwY3NfZ2V0X3N0YXRlYC4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHN0YXRlIGNoZWNrLiAqVGhhdCogc3BlY2lmaWMgZnVuY3Rpb24gY2FsbCBpcyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGdldCBjYWxsZWQgZnJvbSBhbmQgd2hhdCBpcyBoYXBwZW5pbmcgYXJvdW5kIGl0PyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hhdCBpcyBpbml0aWFsaXppbmcgdGhlIFBDUyB0byBiZWdpbiB3aXRoLgoKSSBzaG91bGQgY2hlY2sgdGhlIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCBmdW5jdGlvbi4gSXMgaXQgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGluaXRpYWwgUENTIHN0YXRlIG9yLCBpcyBpdCBjYWxsZWQgYmVmb3JlIGB4cGNzX2dldF9zdGF0ZWA/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByYWNlIGNvbmRpdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gKnRoZXNlKiB0d28gZnVuY3Rpb25zIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU2NT1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTc1OnN0YXRpYyBpbnQgaW50ZWxfbWdiZV9wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTk9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzM4LVx0XHRwbGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzM5Olx0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzQwLVx0XHRwbGF0LVx1MDAzZXBjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzEyNQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQQ1MgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgbGVhZHMgbWUgdG8gYHBsYXQtJmd0O3Bjc19pbml0YCwgYW5kIEkgY2FuIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3Bjc19zZXR1cGAuIFRoYXQgY29uZmlybXMgdGhlIGFzc2lnbm1lbnQgYW5kIHRoZSBjYWxsIHN0YWNrOyBzbyBmYXIsIHNvIGdvb2QuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byBgc3RtbWFjX3Bjc19zZXR1cGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCwgc2VlICpob3cqIGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIGluLiBHb3R0YSBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBzZXR1cCBpdCYjMzk7cyBwZXJmb3JtaW5nLCB3aGF0IHBhcmFtZXRlcnMgbWF0dGVyLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjdXN0b21pemF0aW9uIHBvaW50cyBtaWdodCBiZS4gS25vd2luZyAqaG93KiBpdCYjMzk7cyBhbGwgcHV0IHRvZ2V0aGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgaW1wbGljYXRpb25zIG9mIHRoZSBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Bjc19zZXR1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDE9dm9pZCBzdG1tYWNfbWRpb191bmxvY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwMjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDMtdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3OTc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA0NjpcdHJldCA9IHN0bW1hY19wY3Nfc2V0dXAobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNDctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MzgxPWludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNDI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo0MjY6aW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogODIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0cyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgSW50ZWwgbUdCRSBEZXZpY2UqKgoKT2theSwgc28gdGhpcyBpcyBhbGwgdHJpZ2dlcmVkIGZyb20gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIFRoZSByZWxldmFudCBjb2RlIGNoYW5nZXMgaW4gYHBjcy14cGNzLmNgLCBgc3RtbWFjX21kaW8uY2AsIGFuZCBgZHdtYWMtaW50ZWwuY2AgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcgb2YgdGhlIEludGVsIG1HQkUgZGV2aWNlLiBUaGUgUm9ja2NoaXAtc3BlY2lmaWMgY2hhbmdlcyBpbiBgcGNzLXhwY3MtcmsuY2AgYW5kIGBkd21hYy1yay5jYCBhcmUgbGVzcyBvZiBhIHByaW9yaXR5IGZvciBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCwgYnV0IGl0IGRvZXNuJiMzOTt0IGh1cnQgdG8ga2VlcCBhbiBleWUgb24gdGhlbS4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gUmlnaHQsIGBzdG1tYWNfcGNzX3NldHVwYCBhbmQgYGludGVsX21nYmVfcGNzX2luaXRgIGFyZSBib3RoIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlLiBCdXQgYHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpYCBhbmQgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAgYXJlIHRyaWdnZXJlZCBieSBwaHlsaW5rLCB3aGljaCBpcyB0aGVuIHRyaWdnZXJlZCBieSBuZXRsaW5rLCBsaWtlIGFuIGBpcCBsaW5rIHNldCB1cGAgY29tbWFuZC4gVGhvc2UgcGh5bGluayBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgZ29vZCB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXkmIzM5O3JlIHVzZXItc3BhY2UgY29udHJvbGxhYmxlLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZDogYERXTUFDX0lOVEVMYCwgYFNUTU1BQ19FVEhgLCBgUENTX1hQQ1NgLCBhbmQgYFBDSWAuIEhhbmcgb24uLi4gYFBDU19YUENTYCBpcyBhIHRyaXN0YXRlLCBhbmQgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYERXTUFDX0lOVEVMYC4gT2theSwgcmVhZGluZyB0aGUgcGF0Y2guLi4gYFBDU19YUENTX1BMQVRGT1JNYCBpcyB0aGUgZ2VuZXJpYyBkcml2ZXIuIEFoLCBnb3QgaXQuIGBwY3MteHBjcy5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfUENTX1hQQ1NgIGlzIGVuYWJsZWQuIE9rYXksIGxvb2tpbmcgYXQgdGhlIG1ha2VmaWxlLCBzbyBgcGNzLXhwY3MuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BDU19YUENTYCBpcyBlbmFibGVkLiBgQ09ORklHX0RXTUFDX0lOVEVMYCBzZWxlY3RzIGBQQ1NfWFBDU2AuIFNvLCBpdCBsb29rcyBsaWtlIGBEV01BQ19JTlRFTGAgYW5kIGBTVE1NQUNfRVRIYCBhcmUgdGhlIGNvcmUgcmVxdWlyZW1lbnRzLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgRFdNQUNfUk9DS0NISVBgIHNlbGVjdHMgYFBDU19YUENTX1JPQ0tDSElQYC4gV2UgbWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCB0b28sIGp1c3QgaW4gY2FzZSwgYnV0IHRoZXkmIzM5O3JlIGRlcGVuZGVudCBvbiBgQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1RgLiBTaW5jZSB3ZSB3YW50IHRvIGZvY3VzIG9uIHRoZSBnZW5lcmljIHBhcnRzLCBgRFdNQUNfSU5URUxgIGlzIHRoZSBtb3N0IGltcG9ydGFudC4KCkFscmlnaHQsIGZpbmFsIHZlcmlmaWNhdGlvbjogV2UgbmVlZCBgU1RNTUFDX0VUSGAsIGBEV01BQ19JTlRFTGAsIGFuZCBgUENTX1hQQ1NgLiBJJiMzOTttIHJlYXNvbmFibHkgY29uZmlkZW50IGBEV01BQ19JTlRFTGAgaXMgc3VmZmljaWVudCwgYnV0IGxldCYjMzk7cyB0ZXN0IGl0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERXTUFDX0lOVEVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIzPWNvbmZpZyBEV01BQ19JTVg4XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpjb25maWcgRFdNQUNfSU5URUxfUExBVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzYtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzQ9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc5OmNvbmZpZyBEV01BQ19JTlRFTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBHTUFDIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1NTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqUXVpY2sgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCByaWdodCwgc28gYERXTUFDX0lOVEVMYC4uLnRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGNvbm5lY3Rpb24gb3ZlciB0byBgZHdtYWMtaW50ZWwuY2AuIE1ha2VzIHNlbnNlLCBhbGlnbnMgd2l0aCB0aGUgdXN1YWwgSW50ZWwtc3BlY2lmaWMgZGVzY3JpcHRvci4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCBuZWVkIHRvIGFsc28gY29uZmlybSB0aGUgc3RhdGUgb2YgYFBDU19YUENTYC4gR290IHRvIGNyb3NzLXJlZmVyZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9uIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENTX1hQQ1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL0tjb25maWc9Nj1tZW51IFwmIzM0O1BDUyBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjg6Y29uZmlnIFBDU19YUENTXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7U3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MTU9aWYgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTc6Y29uZmlnIFBDU19YUENTX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0yNi1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI3OmNvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMjgtXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBhbmQgdGhlIGxhYmVsIGBQQ1NfWFBDU2AganVzdCBjbGlja2VkLiBJIGtub3cgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBzeXN0ZW0gc2V0dXAsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoYXQgY29udGV4dC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIHVzZWQsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBEV01BQ19ST0NLQ0hJUGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3RzIHdpdGggdGhlIHNvZnR3YXJlLCBhbmQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhpcyBkZXZpY2Ugb3BlcmF0ZXMuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gdHJhY2UgaG93IHRoaXMgY29uZmlndXJhdGlvbiBpcyBiZWluZyBhcHBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfUk9DS0NISVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY4OmNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjY3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYWRkaW5nIFJvY2tjaGlwIFJLMzU2OCBYUENTIHN1cHBvcnQsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UgY2FuIGluY2x1ZGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCBpbiB0aGUgY29uZmlncywgYnV0IHRoZXkgbWlnaHQgbm90IGJlIHJlYWNoYWJsZS4gSW5jbHVkaW5nIHRoZW0gd29uJiMzOTt0IGh1cnQsIHNvIHdoeSBub3QuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIFJvY2tjaGlwLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgYW5kIEkgbmVlZCB0byBhc3Nlc3MgaXRzIHJlYWNoYWJpbGl0eSBpbiBhIGdlbmVyaWMgZW52aXJvbm1lbnQuIFdoaWxlIHRoZSBwbGF0Zm9ybSBkcml2ZXIgaXRzZWxmLCBhbmQgdGhlIGRpcmVjdCBgcmtfcGNzX2luaXRgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc2VlbSBoYXJkIHRvIHRyaWdnZXIgd2l0aG91dCBhIHNwZWNpZmljIGRldmljZSB0cmVlLCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGZvciBQQ1MgaW5pdGlhbGl6YXRpb24sIGFuZCBpbXBvcnRhbnRseSwgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoYGR3bWFjLWludGVsLmNgKSB1c2VzIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdyBub3cuIFRoaXMgaXMga2V5LiBUaGUgZ2VuZXJpYyBgcGNzLXhwY3NgIGRyaXZlciYjMzk7cyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzIGFyZSBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIG1lYW5zIHdlIGhhdmUgYSBjb3VwbGUgb2YgbW9yZSBnZW5lcmljIGNvZGUgcGF0aHMgdGhhdCBjb3VsZCBiZSBoaXQuCgpUaGVyZWZvcmUsIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBhbmQgY2hhbmdlcyB0byB0aGUgSW50ZWwgUENJIGRyaXZlciwgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbi4gU28sIHRoaXMgcGF0Y2ggKmlzKiB3b3J0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCB1bmRlcndlbnQgY29kZSBjaGFuZ2VzLiBJJiMzOTtsbCBpbmNsdWRlOiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBhbHNvIGFkZGVkIGBya19wY3NfaW5pdGAsIGB4cGNzX3JrX3Byb2JlYCBhbmQgYHhwY3NfcmtfY3JlYXRlYCB0byB0aGUgbGlzdC4gVGhleSBtYXkgYmUgcmVhY2hhYmxlIGFzIHdlbGwuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgc3RtbWFjX3Bjc19zZXR1cGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIG5hbWUuCgpJIGRvdWJsZS1jaGVja2VkIHRoYXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIHN1aXRhYmxlIGFzIGZvY3VzIHN5bWJvbHMuIFRoZXkgbG9vayBmaW5lLiBJIHRoZW4gZGlkIGEgZGlmZiBjaGVjayBvbiBgcGNzLXhwY3MuY2AgdG8gY29uZmlybSB0aGUgZnVuY3Rpb25zIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlIHRoZSBvbmVzIGFjdHVhbGx5IGNoYW5nZWQgYnkgdGhpcyBwYXRjaC4KCk15IGluaXRpYWwgY29uZmlnIHNldHVwIHNlZW1zIHNvdW5kLiBJJiMzOTtsbCB1c2UgYFNUTU1BQ19FVEhgLCBgRFdNQUNfSU5URUxgLCBgUENTX1hQQ1NgLCBgUENTX1hQQ1NfUk9DS0NISVBgLCBhbmQgYERXTUFDX1JPQ0tDSElQYCB0byB0ZXN0LiBPaCwgYW5kIEkganVzdCBub3RpY2VkIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgc28gSSYjMzk7bGwgaW5jbHVkZSBgUEhZX1JPQ0tDSElQX05BTkVOR19DT01CUEhZYCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJQSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipGaW5kaW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyByZWxhdGVkIHRvIGEgUm9ja2NoaXAgc3lzdGVtLW9uLWEtY2hpcCAoU29DKSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIGEgY29tYmluZWQgUEhZIChwaHlzaWNhbCBsYXllcikgbGlrZSBhIFVTQiBvciBQQ0llIFBIWS4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIGFuZCBwcm9iYWJseSBzb21lIGRldmljZSB0cmVlIGJpbmRpbmdzLCBhbmQgdGhlbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBkcml2ZXIuCgpGaXJzdCwgSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuIEEgcXVpY2sgc2VhcmNoIGZvciB0aGF0IGZpbGVuYW1lIHNob3VsZCBwb2ludCBtZSB0byB0aGUgY29ycmVjdCBkaXJlY3Rvcnkgc3RydWN0dXJlLiBJJiMzOTtsbCB0aGVuIGV4YW1pbmUgdGhlIGZpbGUgY29udGVudHMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGNvbWJpbmF0aW9uIG9mIGRldmljZS1zcGVjaWZpYyByZWdpc3RlciBkZWZpbml0aW9ucywgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMsIHBvc3NpYmx5IHVzaW5nIGEgY29tbW9uIFBIWSBmcmFtZXdvcmsuIFRoZSBjb25maWd1cmF0aW9uIHNob3VsZCBiZSBwcmVzZW50IGVpdGhlciBkaXJlY3RseSB3aXRoaW4gdGhhdCBkcml2ZXIgZmlsZSBvciwgbW9yZSBsaWtlbHksIG1hbmFnZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBiaW5kaW5ncy4KCklmIGl0JiMzOTtzIGRldmljZSB0cmVlIGJhc2VkLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb3JyZXNwb25kaW5nIERUIChEZXZpY2UgVHJlZSkgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiwgdXN1YWxseSBmb3VuZCBpbiBhIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYCBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBkZXRhaWxzIG9uIHRoZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIERUIG5vZGUgZm9yIHRoaXMgUEhZIGV4cGVjdHMsIGFuZCBob3cgdGhlc2Ugc2V0dGluZ3MgYXJlIGFwcGxpZWQuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBzZXR0aW5ncyAoY2xvY2sgZnJlcXVlbmNpZXMsIGNsb2NrIGRvbWFpbnMpLCBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzICh2b2x0YWdlIHJhaWxzLCBwb3dlciBkb21haW5zKSwgYW55IHJlcXVpcmVkIGludGVycnVwdCBsaW5lcywgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIGFkZHJlc3NlcyBvciBvZmZzZXRzIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoaXMgc3BlY2lmaWMgZHJpdmVyIHRvIGluaXRpYWxpemUgdGhpcyBzcGVjaWZpYyBQSFkuIFRoZSBzcGVjaWZpY3Mgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgcGFydGljdWxhciBuYW5lbmctY29tYnBoeS4gSSYjMzk7bGwgYWxzbyBiZSBleGFtaW5pbmcgaG93IHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIHRoZSBvdGhlciBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHBpZWNlIHRvZ2V0aGVyIHRoZSBlbnRpcmUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIFJvY2tjaGlwIFNvQyBjb250ZXh0LCBzbyB0aGF0IGlmIHRoZXJlIHdlcmUgYSBtYWxmdW5jdGlvbiwgSSB3b3VsZCBrbm93IGhvdyB0byB0cm91Ymxlc2hvb3QgdGhpcyBkZXZpY2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGh5L3JvY2tjaGlwL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9JTk5PX1VTQjIpXHQmIzQzOz0gcGh5LXJvY2tjaGlwLWlubm8tdXNiMi5vXG5kcml2ZXJzL3BoeS9yb2NrY2hpcC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSlcdCYjNDM7PSBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkub1xuZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX1BIWV9ST0NLQ0hJUF9QQ0lFKVx0XHQmIzQzOz0gcGh5LXJvY2tjaGlwLXBjaWUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgwMwoJCQkJCQkJb3V0cHV0OiAzNTkKCQkJCQkJCXRob3VnaHRzOiAyOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUkszNTY4IFhQQ1MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJIHNlZSBpdCYjMzk7cyBhZGRpbmcgYFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQk9fUEhZYCB0byB0aGUgY29uZmlncywgc28gdGhhdCYjMzk7cyB0aGUgZHJpdmVyLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgUm9ja2NoaXAgUkszNTY4IFhQQ1MgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gYWZmZWN0cyB0aGUgYHBjcy14cGNzYCwgYHN0bW1hY2AsIGFuZCBgZHdtYWMtaW50ZWxgIGRyaXZlcnMuCgpUaGUgdHJpY2t5IHBhcnQgaXMgdGhhdCB0aGUgcGxhdGZvcm0gZHJpdmVyIGl0c2VsZiwgdGhlIFJvY2tjaGlwIHNwZWNpZmljIGJpdCwgbWlnaHQgYmUgaGFyZCB0byBoaXQgaW4gbXkgdXN1YWwgdmlydHVhbGl6ZWQgc2V0dXAgd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24uIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgc29tZSAqZ2VuZXJpYyogY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgcmVmYWN0b3JpbmcgaW4gdGhlIGBzdG1tYWNgIGluaXRpYWxpemF0aW9uIGZsb3cgaXMgaW50ZXJlc3RpbmcsIGFuZCB0aGUgY2hhbmdlcyB0byB0aGUgSW50ZWwgbUdCRSBQQ0kgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApIHRvIHVzZSB0aGF0IG5ldyBpbml0aWFsaXphdGlvbiBhcmUgZGVmaW5pdGVseSBpbiBzY29wZS4gSSBjYW4gZ2V0IHRvIHRoZXNlLCByZWdhcmRsZXNzIG9mIHNwZWNpZmljIGhhcmR3YXJlLiBBZGRpdGlvbmFsbHksIHRoZSBwYXRjaCBhbHRlcnMgdGhlIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgaW4gdGhlIGdlbmVyaWMgYHBjcy14cGNzLmNgIGRyaXZlciBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhvc2UgYXJlIGFsc28gcmVhY2hhYmxlLgoKR2l2ZW4gdGhlc2UgZ2VuZXJpYyBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZSByZWFjaGFiaWxpdHkgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIG1hbmlwdWxhdGlvbiwgSSYjMzk7ZCBzYXkgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGZ1enphYmxlLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgZ2V0IHRoaXMgYWRkZWQgdG8gdGhlIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDUyYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDU19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtEV01BQ19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleCYjMzQ7LAogICAgJiMzNDt4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzX3NldHVwJiMzNDssCiAgICAmIzM0O3JrX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3hwY3NfcmtfcHJvYmUmIzM0OywKICAgICYjMzQ7eHBjc19ya19jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJiMzOTtzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDUyYjMzQ7LAogICAgJiMzNDtQQ1NfWFBDU19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtEV01BQ19ST0NLQ0hJUCYjMzQ7LAogICAgJiMzNDtQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpJiMzNDssCiAgICAmIzM0O3hwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleCYjMzQ7LAogICAgJiMzNDt4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkmIzM0OywKICAgICYjMzQ7aW50ZWxfbWdiZV9wY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzX3NldHVwJiMzNDssCiAgICAmIzM0O3JrX3Bjc19pbml0JiMzNDssCiAgICAmIzM0O3hwY3NfcmtfcHJvYmUmIzM0OywKICAgICYjMzQ7eHBjc19ya19jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJiMzOTtzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjI4LjEyNDIzNjU4N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTMxMzQ0NTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiLFxuICAgIFwiUENTX1hQQ1NcIixcbiAgICBcIlBDU19YUENTX1JPQ0tDSElQXCIsXG4gICAgXCJEV01BQ19ST0NLQ0hJUFwiLFxuICAgIFwiUEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paVwiLFxuICAgIFwieHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4XCIsXG4gICAgXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcIixcbiAgICBcImludGVsX21nYmVfcGNzX2luaXRcIixcbiAgICBcInN0bW1hY19wY3Nfc2V0dXBcIixcbiAgICBcInJrX3Bjc19pbml0XCIsXG4gICAgXCJ4cGNzX3JrX3Byb2JlXCIsXG4gICAgXCJ4cGNzX3JrX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlcidzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjguMTI0MjQxMTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ2OTQ1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4xNGZhZGY2N2M3OTNhOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbkBAIC0wLDAgKzEsMTI2IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIENvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcXG4rICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxcbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXFxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcXG4rICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxcbitcXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxcbisgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxcbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXFxuK1xcbisgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyAocGNzLW1paUAwLi4zKSB0aGF0IGNhbiBiZVxcbisgIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZCByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzXFxuKyAgdmlhIHRoZSBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xcbitcXG4rICAnI2FkZHJlc3MtY2VsbHMnOlxcbisgICAgY29uc3Q6IDFcXG4rXFxuKyAgJyNzaXplLWNlbGxzJzpcXG4rICAgIGNvbnN0OiAwXFxuK1xcbisgIHJlZzpcXG4rICAgIGRlc2NyaXB0aW9uOiB8XFxuKyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcXG4rICAgICAgQVBCMyBidXMuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBjbG9ja3M6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcXG4rICAgICAgLSBjc3I6IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyXFxuKyAgICAgICAgYWNjZXNzLlxcbisgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxcbisgICAgICAgIEV0aGVybmV0IChFRUUpIG9wZXJhdGlvbi5cXG4rICAgIG1pbkl0ZW1zOiAyXFxuKyAgICBtYXhJdGVtczogMlxcbitcXG4rICBjbG9jay1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBjc3JcXG4rICAgICAgLSBjb25zdDogZWVlXFxuK1xcbisgIHBoeXM6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXFxuKyAgICAgIHRoZSBzZXJpYWwgbGFuZXMgZm9yIDEwMDBCQVNFLVggLyBTR01JSSAvIFFTR01JSS5cXG4rICAgICAgVGhlIFNlckRlcyBtdXN0IGJlIHBvd2VyZWQgb24gYW5kIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgWFBDU1xcbisgICAgICByZWdpc3RlciBhY2Nlc3MuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBwaHktbmFtZXM6XFxuKyAgICBjb25zdDogc2VyZGVzXFxuK1xcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBQb3dlciBkb21haW4gZm9yIHRoZSBYUENTLlxcbisgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXFxuKyAgICAgIHN1cHBsaWVzIHRoZSBTZXJEZXMgUEhZLlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJecGNzLW1paUBbMC0zXSRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBPbmUgb2YgdGhlIGZvdXIgTUlJIHBvcnRzIG9mIHRoZSBYUENTLlxcbisgICAgICBUaGUgcG9ydCBudW1iZXIgaXMgc3BlY2lmaWVkIGJ5IHRoZSByZWcgcHJvcGVydHkgKDAuLjMpLlxcbisgICAgICBUaGUgcG9ydCBpcyBsaW5rZWQgdG8gYW4gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXIgdmlhIHRoZVxcbisgICAgICBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMncyBkZXZpY2UgdHJlZSBub2RlLlxcbitcXG4rICAgIHByb3BlcnRpZXM6XFxuKyAgICAgIHJlZzpcXG4rICAgICAgICBtaW5pbXVtOiAwXFxuKyAgICAgICAgbWF4aW11bTogM1xcbisgICAgICAgIGRlc2NyaXB0aW9uOiB8XFxuKyAgICAgICAgICBNSUkgcG9ydCBudW1iZXIgb2YgUENTLlxcbitcXG4rICAgICAgc3RhdHVzOiB0cnVlXFxuK1xcbisgICAgcmVxdWlyZWQ6XFxuKyAgICAgIC0gcmVnXFxuK1xcbisgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZ1xcbisgIC0gY2xvY2tzXFxuKyAgLSBjbG9jay1uYW1lc1xcbitcXG4rYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcXHUwMDNlXFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcXHUwMDNlXFxuK1xcbisgICAgcGNzQGZkYTAwMDAwIHtcXG4rICAgICAgY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCI7XFxuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgcmVnID0gXFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFxcdTAwM2U7XFxuKyAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Y3J1IFBDTEtfWFBDU1xcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y3J1IENMS19YUENTX0VFRVxcdTAwM2U7XFxuKyAgICAgIGNsb2NrLW5hbWVzID0gXFxcImNzclxcXCIsIFxcXCJlZWVcXFwiO1xcbisgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVxcdTAwM2U7XFxuKyAgICAgIHBoeS1uYW1lcyA9IFxcXCJzZXJkZXNcXFwiO1xcbisgICAgICBwb3dlci1kb21haW5zID0gXFx1MDAzY1xcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVxcdTAwM2U7XFxuK1xcbisgICAgICBwY3MtbWlpQDAge1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuaW5kZXggMzc5YjA4YmQ5ZTk3YTYuLjYxNzMxOTJlMzFhYjJmIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuQEAgLTgwLDYgKzgwLDEzIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjpcXG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXFxuIFxcbisgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6XFxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcXG4rICAgIGVudW06IFswLCAxXVxcbisgICAgZGVmYXVsdDogMFxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFNlbGVjdCBnbWFjMCBvciBnbWFjMSB0byBiZSB1c2VkIGFzIFNHTUlJIGNvbnRyb2xsZXIuXFxuK1xcbiAgIFxcXCIjcGh5LWNlbGxzXFxcIjpcXG4gICAgIGNvbnN0OiAxXFxuIFxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggODA2YmQyZDgwZDE1MzUuLjhjYmE2YTBhMmRkMDM0IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjM0NjMsNiArMjM0NjMsMTUgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbFxcbiBGOlxcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxcbiBcXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcXG4rTTpcXHRDb2lhIFByYW50IFxcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXFx1MDAzZVxcbitMOlxcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXG4rTDpcXHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXFxuK1M6XFx0TWFpbnRhaW5lZFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXFxuK0Y6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxuK1xcbiBST0NLRVIgRFJJVkVSXFxuIE06XFx0SmlyaSBQaXJrbyBcXHUwMDNjamlyaUByZXNudWxsaS51c1xcdTAwM2VcXG4gTDpcXHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5pbmRleCA1OGMxMDUyYmE4ZWYzNS4uOTFjMTdiNjI0ZmQxN2QgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAvZHRzLXYxLztcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwicmszNTY4LmR0c2lcXFwiXFxuQEAgLTI0Miw2ICsyNDMsNyBAQCBcXHUwMDI2Y29tYnBoeTEge1xcbiBcXG4gXFx1MDAyNmNvbWJwaHkyIHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbitcXHRyb2NrY2hpcCxzZ21paS1tYWMtc2VsID0gXFx1MDAzYzBcXHUwMDNlO1xcbiB9O1xcbiBcXG4gXFx1MDAyNmNwdTAge1xcbkBAIC0yNjAsOSArMjYyLDE4IEBAIFxcdTAwMjZjcHUzIHtcXG4gXFx0Y3B1LXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dmRkX2NwdVxcdTAwM2U7XFxuIH07XFxuIFxcbi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovXFxuKy8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAqL1xcbiBcXHUwMDI2Z21hYzAge1xcbi1cXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRhc3NpZ25lZC1jbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmNydSBTQ0xLX0dNQUMwX1JYX1RYXFx1MDAzZTtcXG4rXFx0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFxcdTAwM2NcXHUwMDI2eHBjc19nbWFjMF9jbGtcXHUwMDNlO1xcbitcXHRwY3MtaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZ4cGNzX21paTBcXHUwMDNlO1xcbitcXHRtYW5hZ2VkID0gXFxcImluLWJhbmQtc3RhdHVzXFxcIjtcXG4rXFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2c2dtaWlfcGh5XFx1MDAzZTtcXG4rXFx0cGh5LW1vZGUgPSBcXFwic2dtaWlcXFwiO1xcbitcXHRwaHktc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2Y2NfM3YzXFx1MDAzZTtcXG4rXFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4rXFx0cGluY3RybC0wID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9taWltXFx1MDAzZTtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG4gLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovXFxuQEAgLTM0MSw2ICszNTIsMzkgQEAgXFx1MDAyNmkyczBfOGNoIHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG4rXFx1MDAyNm1kaW8wIHtcXG4rXFx0c2dtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhXFxcIjtcXG4rXFx0XFx0cmVnID0gXFx1MDAzYzB4M1xcdTAwM2U7XFxuK1xcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MxMDAwXFx1MDAzZTtcXG4rXFx0XFx0ZWVlLWJyb2tlbi0xMGd0O1xcbitcXHRcXHRlZWUtYnJva2VuLTEwZ2t4NDtcXG4rXFx0XFx0ZWVlLWJyb2tlbi0xMGdrcjtcXG4rXFx0XFx0cmVzZXQtYXNzZXJ0LXVzID0gXFx1MDAzYzIwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZGVhc3NlcnQtdXMgPSBcXHUwMDNjMTAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbitcXG4rXFx0XFx0bGVkcyB7XFxuK1xcdFxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdFxcdGxlZEAxIHtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRjb2xvciA9IFxcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XFxuK1xcdFxcdFxcdFxcdGRlZmF1bHQtc3RhdGUgPSBcXFwia2VlcFxcXCI7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRsZWRAMiB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbit9O1xcbitcXG4gXFx1MDAyNm1kaW8xIHtcXG4gXFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcXFwiO1xcbkBAIC0zNTAsNiArMzk0LDI1IEBAIHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbiBcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1xcdTAwM2U7XFxuIFxcdFxcdHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzE1MDBcXHUwMDNlO1xcbiBcXHRcXHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MxNTAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGxlZHMge1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHRsZWRAMSB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0bGVkQDIge1xcbitcXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGNvbG9yID0gXFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjtcXG4rXFx0XFx0XFx0XFx0ZGVmYXVsdC1zdGF0ZSA9IFxcXCJrZWVwXFxcIjtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuQEAgLTU4NiwzICs2NDksMTMgQEAgXFx1MDAyNnhpbjMyayB7XFxuIFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuIFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2xrMzJrX291dDFcXHUwMDNlO1xcbiB9O1xcbitcXG4rXFx1MDAyNnhwY3Mge1xcbitcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuK1xcdHBoeXMgPSBcXHUwMDNjXFx1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXFx1MDAzZTtcXG4rXFx0cGh5LW5hbWVzID0gXFxcInNlcmRlc1xcXCI7XFxuK307XFxuK1xcbitcXHUwMDI2eHBjc19taWkwIHtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbit9O1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbmluZGV4IDNiYzY1M2YwMjdmMWZlLi45ODllMTY0YzBlYjM5OCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXFxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbkBAIC0xMTAsNiArMTEwLDUxIEBAIHNhdGEwOiBzYXRhQGZjMDAwMDAwIHtcXG4gXFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4gXFx0fTtcXG4gXFxuK1xcdHhwY3M6IHBjc0BmZGEwMDAwMCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4LXhwY3NcXFwiO1xcbitcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDBcXHUwMDNlO1xcbitcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmNydSBQQ0xLX1hQQ1NcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmNydSBDTEtfWFBDU19FRUVcXHUwMDNlO1xcbitcXHRcXHRjbG9jay1uYW1lcyA9IFxcXCJjc3JcXFwiLCBcXFwiZWVlXFxcIjtcXG4rXFx0XFx0cG93ZXItZG9tYWlucyA9IFxcdTAwM2NcXHUwMDI2cG93ZXIgUkszNTY4X1BEX1BJUEVcXHUwMDNlO1xcbitcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXG4rXFx0XFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcbitcXHRcXHR4cGNzX21paTE6IHBjcy1taWlAMSB7XFxuK1xcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0XFx0fTtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMjogcGNzLW1paUAyIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzJcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjM1xcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcdH07XFxuK1xcbitcXHR4cGNzX2dtYWMwX2NsazogeHBjcy1nbWFjMC1jbG9jayB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZml4ZWQtY2xvY2tcXFwiO1xcbitcXHRcXHRjbG9jay1mcmVxdWVuY3kgPSBcXHUwMDNjMTI1MDAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcImNsa19nbWFjMF94cGNzX21paVxcXCI7XFxuK1xcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFx0fTtcXG4rXFxuK1xcdHhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHtcXG4rXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmaXhlZC1jbG9ja1xcXCI7XFxuK1xcdFxcdGNsb2NrLWZyZXF1ZW5jeSA9IFxcdTAwM2MxMjUwMDAwMDBcXHUwMDNlO1xcbitcXHRcXHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcXFwiY2xrX2dtYWMxX3hwY3NfbWlpXFxcIjtcXG4rXFx0XFx0I2Nsb2NrLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHR9O1xcbitcXG4gXFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcXG4gXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmXFxcIiwgXFxcInN5c2NvblxcXCI7XFxuIFxcdFxcdHJlZyA9IFxcdTAwM2MweDAgMHhmZGM3MDAwMCAweDAgMHgxMDAwXFx1MDAzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcXG5pbmRleCBlM2RkNWFkZGE1YWNhZi4uNTA4OGFjYzA2OTgyZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcXG5AQCAtMTcwLDYgKzE3MCw3IEBAIGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiBcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXFxuIFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuK1xcdHNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUFxcbiBcXHRoZWxwXFxuIFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uMDgxMzIzYzMyYmNjMTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNTcyLDEzICs1NzIsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuIFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4rXFx0aW50IGFkZHI7XFxuK1xcbitcXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpO1xcbitcXG4rXFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIikpIHtcXG4rXFx0XFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xcbitcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0YWRkciA9IGZmcyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykgLSAxO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVxcdTAwM2VtaWksIGFkZHIpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4tXFx0LyogcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YS1cXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXFxuLVxcdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXFxuLVxcdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXFxuLVxcdCAqL1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4gfVxcbiBcXG5AQCAtNzAyLDYgKzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ICAgIHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXQtXFx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcXG4rXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcXG5pbmRleCAxOWYzNGUxOGJmZWYyYy4uOWFmMzJjMjZmOWMxNDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXFxuQEAgLTgxLDggKzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyB2b2lkIHJlbmVzYXNfZ21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmVuZXNhc19nbWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuY1xcbmluZGV4IDhkNzA0MmU2ODkyNjE5Li5lY2E0ODJiNGI2YmZjMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuY1xcbkBAIC0yMCw2ICsyMCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xcbiBcXHR2b2lkICgqc2V0X3RvX3JnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0XFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XFxuIFxcdHZvaWQgKCpzZXRfdG9fcm1paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xcbitcXHR2b2lkICgqc2V0X3RvX3NnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuIFxcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXFxuIFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQpO1xcbiBcXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xcbkBAIC02Myw2ICs2NSw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XFxuIFxcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcmdtaWk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcm1paTtcXG4rXFx0Ym9vbCBzdXBwb3J0c19zZ21paTtcXG4gXFx0Ym9vbCBwaHBfZ3JmX3JlcXVpcmVkO1xcbiBcXHRib29sIHJlZ3NfdmFsaWQ7XFxuIFxcdHUzMiByZWdzW107XFxuQEAgLTk4LDYgKzEwMSw3IEBAIHN0cnVjdCBya19wcml2X2RhdGEge1xcbiBcXHRib29sIGludGVncmF0ZWRfcGh5O1xcbiBcXHRib29sIHN1cHBvcnRzX3JnbWlpO1xcbiBcXHRib29sIHN1cHBvcnRzX3JtaWk7XFxuK1xcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XFxuIFxcbiBcXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcXG4gXFx0aW50IG51bV9jbGtzO1xcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xcbiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMVxcdFxcdDB4MDM4Y1xcbiBcXG4gLyogUkszNTY4X0dSRl9HTUFDMF9DT04xIFxcdTAwMjZcXHUwMDI2IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqL1xcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfUk1JSV9SR01JSVxcdFxcdEdSRl9DTFJfQklUKDcpXFxuKyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUlcXHRcXHRHUkZfQklUKDcpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMXFx0XFx0XFx0R1JGX0JJVCgzKVxcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcXHRcXHRHUkZfQ0xSX0JJVCgzKVxcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcXHRcXHRHUkZfQklUKDEpXFxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXFxuIFxcdFxcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xcbiBcXG4gXFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVxcdTAwM2VncmYsIGNvbjEsXFxuK1xcdFxcdCAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHxcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHxcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19zZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4re1xcbitcXHR1MzIgY29uMTtcXG4rXFxuK1xcdGNvbjEgPSAoYnNwX3ByaXYtXFx1MDAzZWlkID09IDEpID8gUkszNTY4X0dSRl9HTUFDMV9DT04xIDpcXG4rXFx0XFx0XFx0XFx0ICAgICBSSzM1NjhfR1JGX0dNQUMwX0NPTjE7XFxuK1xcbitcXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXFx1MDAzZWdyZiwgY29uMSwgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkpO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7XFxuIFxcdC5pbml0ID0gcmszNTY4X2luaXQsXFxuIFxcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxcbitcXHQuc2V0X3RvX3NnbWlpID0gcmszNTY4X3NldF90b19zZ21paSxcXG4rXFxuIFxcdC5zZXRfc3BlZWQgPSBya19zZXRfY2xrX21hY19zcGVlZCxcXG4gXFxuIFxcdC5nbWFjX3BoeV9pbnRmX3NlbF9tYXNrID0gR0VOTUFTS19VMTYoNiwgNCksXFxuIFxcbiBcXHQuc3VwcG9ydHNfcm1paSA9IHRydWUsXFxuK1xcdC5zdXBwb3J0c19zZ21paSA9IHRydWUsXFxuIFxcbiBcXHQucmVnc192YWxpZCA9IHRydWUsXFxuIFxcdC5yZWdzID0ge1xcbkBAIC0xMjA4LDYgKzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0ZGV2X2Vycihic3BfcHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbCB0byBkaXNhYmxlIHBoeS1zdXBwbHlcXFxcblxcXCIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xcbitcXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcXG4rXFxuK1xcdHBjc19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgXFxcInBjcy1oYW5kbGVcXFwiLCAwKTtcXG4rXFx0aWYgKCFwY3Nfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHR4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi1cXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XFxuK1xcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcXG4rXFx0aWYgKElTX0VSUih4cGNzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoeHBjcyk7XFxuK1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuK3tcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0eHBjc19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MgPSBOVUxMO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpya19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcylcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbiBcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyAqb3BzKVxcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbiBcXG4gXFx0YnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3JnbWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19yZ21paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3JnbWlpO1xcbiBcXHRic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cXHUwMDNlc3VwcG9ydHNfcm1paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3JtaWk7XFxuK1xcdGJzcF9wcml2LVxcdTAwM2VzdXBwb3J0c19zZ21paSA9IG9wcy1cXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXFx1MDAzZXNldF90b19zZ21paTtcXG4gXFxuIFxcdGlmIChvcHMtXFx1MDAzZWluaXQpIHtcXG4gXFx0XFx0cmV0ID0gb3BzLVxcdTAwM2Vpbml0KGJzcF9wcml2KTtcXG5AQCAtMTM2MSw2ICsxNDE5LDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19jaGVja19vcHMoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdGlmICghYnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3JtaWkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdFxcdGlmICghYnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3NnbWlpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGRldl9lcnIoYnNwX3ByaXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFxcInVuc3VwcG9ydGVkIGludGVyZmFjZSAlZFxcXCIsIGJzcF9wcml2LVxcdTAwM2VwaHlfaWZhY2UpO1xcbkBAIC0xMzc5LDYgKzE0NDEsOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdGlmIChic3BfcHJpdi1cXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcXG4rXFx0XFx0Z290byBzZXRfbW9kZTtcXG4rXFxuIFxcdHJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xNDE2LDcgKzE0ODEsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHQvKnJtaWkgb3IgcmdtaWkqL1xcbitzZXRfbW9kZTpcXG4rXFx0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXFxuIFxcdHN3aXRjaCAoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LCBcXFwiaW5pdCBmb3IgUkdNSUlcXFxcblxcXCIpO1xcbkBAIC0xNDQ3LDYgKzE1MTMsMTEgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdGlmIChic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfdG9fcm1paSlcXG4gXFx0XFx0XFx0YnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdFxcdGRldl9pbmZvKGRldiwgXFxcImluaXQgZm9yIFNHTUlJXFxcXG5cXFwiKTtcXG4rXFx0XFx0aWYgKGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19zZ21paSlcXG4rXFx0XFx0XFx0YnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3NnbWlpKGJzcF9wcml2KTtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiTk8gaW50ZXJmYWNlIGRlZmluZWQhXFxcXG5cXFwiKTtcXG4gXFx0fVxcbkBAIC0xNDg2LDYgKzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxcbiBcXG4gXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19ybWlpKVxcbiBcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xcbitcXG4rXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19zZ21paSlcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuQEAgLTE2MDIsNiArMTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcXG4gXFxuK1xcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0XFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gTlVMTDtcXG4rXFxuK1xcdFxcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xcbitcXHR9XFxuK1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcXG5pbmRleCAxMzYzNDk2NWJjMTlhMS4uMDFkZjQ3NzZlZGIzZmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXFxuQEAgLTM1LDggKzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCByem4xX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4ge1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbi1cXHRcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyem4xX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG5pbmRleCAxZDdmMGE1N2QyODg5Ny4uNmQ0YmMxZmU4Zjc1MTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuQEAgLTUzOSw4ICs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyB2b2lkIHNvY2ZwZ2FfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuLVxcdFxcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0aWYgKCFwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqc29jZnBnYV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5pbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuLVxcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4tXFx0aW50IGFkZHIsIHJldDtcXG4tXFxuLVxcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuLVxcbi1cXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpIHtcXG4tXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQocHJpdik7XFxuLVxcdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXFxcInBjcy1oYW5kbGVcXFwiKSkge1xcbi1cXHRcXHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIiwgMCk7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XFxuLVxcdFxcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xcbi1cXHRcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XFxuLVxcdH0gZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykge1xcbi1cXHRcXHRhZGRyID0gZmZzKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZXBjc19tYXNrKSAtIDE7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXFx1MDAzZW1paSwgYWRkcik7XFxuLVxcdFxcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHR9XFxuIFxcbitcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfaW5pdChwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2aWNlLCByZXQsIFxcXCJObyB4UENTIGZvdW5kXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGlmICh4cGNzKVxcbi1cXHRcXHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW11bHRfZmFjdF8xMDBucyk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNDYzLDE0ICs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBjc19leGl0KVxcbi1cXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfZXhpdChwcml2KTtcXG4tXFxuLVxcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuLVxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rXFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQocHJpdik7XFxuIH1cXG4gXFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuaW5kZXggZTQxN2ZkNjZmNjYwYWQuLjMyODZiYzkzZTcwMjY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcXG5AQCAtMTIsNiArMTIsMjggQEAgY29uZmlnIFBDU19YUENTXFxuIFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXFxuIFxcdCAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLlxcbiBcXG4raWYgUENTX1hQQ1NcXG4rXFxuK2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STVxcbitcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4rXFx0ZGVmYXVsdCBQQ1NfWFBDU1xcbitcXHRoZWxwXFxuK1xcdCAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbitcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4rXFx0ICBkYXRhIGZvciBzZXR1cC5cXG4rXFxuK1xcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4rXFxuK2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxcbitcXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbitcXHRoZWxwXFxuK1xcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXFxuK1xcbitcXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4rXFxuK2VuZGlmICMgUENTX1hQQ1NcXG4rXFxuIGNvbmZpZyBQQ1NfTFlOWFxcbiBcXHR0cmlzdGF0ZVxcbiBcXHRoZWxwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxcbmluZGV4IDRmNzkyMDYxOGI5MDA1Li5jODA5YjdmOTQyYTUxOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG5AQCAtMSwxMCArMSw5IEBAXFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcXG4gXFxuLXBjc194cGNzLSQoQ09ORklHX1BDU19YUENTKVxcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXFxcXG4tXFx0XFx0XFx0XFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xcbi1cXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSArPSBwY3MteHBjcy1yay5vXFxuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVkOTY5YTM4ZDU0NGQ1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXFxuQEAgLTAsMCArMSw1MjYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLypcXG4rICogUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxuKyAqXFxuKyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgU2VyZ2UgU2VtaW5cXG4rICpcXG4rICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuXFxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBDb2lhIFByYW50XFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0b21pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb2xsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fZG9tYWluLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc2l6ZXMuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJwY3MteHBjcy5oXFxcIlxcbitcXG4rc3RydWN0IGR3X3hwY3Nfcmsge1xcbitcXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbitcXHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlO1xcbitcXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xcbitcXHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xcbitcXHRzdHJ1Y3QgY2xrICplZWVfY2xrO1xcbit9O1xcbitcXG4rc3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpXFxuK3tcXG4rXFx0cmV0dXJuIEZJRUxEX1BSRVAoMHg3MDAwMCwgZGV2KSB8IEZJRUxEX1BSRVAoMHhmZmZmLCByZWcpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHB0cmRpZmZfdCBjc3I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gcmVhZGwocHhwY3MtXFx1MDAzZXJlZ19iYXNlICsgKGNzciBcXHUwMDNjXFx1MDAzYyAyKSkgXFx1MDAyNiAweGZmZmY7XFxuK1xcbitcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbit7XFxuK1xcdHB0cmRpZmZfdCBjc3I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0d3JpdGVsKHZhbCwgcHhwY3MtXFx1MDAzZXJlZ19iYXNlICsgKGNzciBcXHUwMDNjXFx1MDAzYyAyKSk7XFxuK1xcbitcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXFx0MlxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkyXFx0M1xcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkzXFx0NFxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcXHQ2XFxuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSVxcdDdcXG4rXFxuK3N0YXRpYyBib29sIHhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGludCBhZGRyKVxcbit7XFxuK1xcdHJldHVybiAhKGFkZHIgXFx1MDAzYyAwIHx8IGFkZHIgXFx1MDAzZSAzKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXFxuK3tcXG4rXFx0c3dpdGNoIChkZXYpIHtcXG4rXFx0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xcbitcXHRjYXNlIE1ESU9fTU1EX1ZFTkQyOlxcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0fVxcbitcXG4rXFx0c3dpdGNoIChhZGRyKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xcbitcXHRjYXNlIDI6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzd2l0Y2ggKGRldikge1xcbitcXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XFxuK1xcdGNhc2UgTURJT19NTURfVkVORDI6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOWElPO1xcbitcXHR9XFxuK1xcbitcXHQvKiBXcml0YWJsZSBvbmx5IG9uIE1JSSAqL1xcbitcXHRzd2l0Y2ggKHJlZykge1xcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9JTlRSX1NUUzpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRElHX0NUUkwyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoYWRkcikge1xcbitcXHRjYXNlIDA6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xcbitcXHRjYXNlIDE6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XFxuK1xcdGNhc2UgMzpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgZGV2O1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBkZXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xcbitcXHRpZiAoZGV2IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcbitcXHRweHBjcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHhwY3MpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbitcXG4rXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHB4cGNzKTtcXG4rXFxuK1xcdHJldHVybiBweHBjcztcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFxcXCJzZXJkZXNcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXG4rXFx0cGh5X3Bvd2VyX29mZihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdHBoeV9leGl0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9pbml0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBpbml0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXHRcXHRnb3RvIHBtX2RvbWFpbjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBzZXJkZXNfcGh5O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBTZXJEZXMgUEhZOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitzZXJkZXNfcGh5OlxcbitcXHRwaHlfZXhpdChweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK3BtX2RvbWFpbjpcXG4rXFx0ZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVxcdTAwM2VwZGV2O1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcXG4rXFxuK1xcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiTm8gcmVnLXNwYWNlIGZvdW5kXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyZXNvdXJjZV9zaXplKHJlcykgXFx1MDAzYyBTWl8yTSkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkludmFsaWQgcmVnLXNwYWNlIHNpemVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIG1hcCByZWctc3BhY2VcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihweHBjcy1cXHUwMDNlcmVnX2Jhc2UpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcbitcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXFx1MDAzZWVlZV9jbGspO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZWNzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwiY3NyXFxcIik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZWNzcl9jbGspKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXFx1MDAzZWNzcl9jbGspLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIkZhaWxlZCB0byBnZXQgQ1NSIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xcbitcXHRyZXQgPSBkZXZtX3BtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlZWVlX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJlZWVcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlZWVlX2NsaykpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlZWVlX2NsayksXFxuK1xcdFxcdFxcdFxcdFxcdCBcXFwiRmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVxcdTAwM2VlZWVfY2xrKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdGF0aWMgYXRvbWljX3QgaWQgPSBBVE9NSUNfSU5JVCgtMSk7XFxuK1xcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApO1xcbitcXHRpZiAoIWJ1cylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUm9ja2NoaXAgRFcgWFBDUyBNQ0kvQVBCM1xcXCI7XFxuK1xcdGJ1cy1cXHUwMDNlcmVhZCA9IHhwY3NfcmtfcmVhZF9jMjI7XFxuK1xcdGJ1cy1cXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcXG4rXFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XFxuK1xcdGJ1cy1cXHUwMDNld3JpdGVfYzQ1ID0geHBjc19ya193cml0ZV9jNDU7XFxuK1xcdGJ1cy1cXHUwMDNlcGh5X21hc2sgPSB+MDtcXG4rXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuK1xcdGJ1cy1cXHUwMDNlcHJpdiA9IHB4cGNzO1xcbitcXG4rXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLFxcbitcXHRcXHQgXFxcInJvY2tjaGlwX2R3eHBjcy0leFxcXCIsIGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZpZCkpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXRcXG4rXFx0ICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NSc1xcbitcXHQgKiBhY2Nlc3MuXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2VidXMgPSBidXM7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRweHBjcyA9IHhwY3NfcmtfY3JlYXRlX2RhdGEocGRldik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cXG4rXFx0ICogbXVzdCBiZSBwb3dlcmVkIG9uIGJlZm9yZSBhbnkgcmVnaXN0ZXIgYWNjZXNzLCBvdGhlcndpc2UgdGhlIFNvQyB3aWxsXFxuK1xcdCAqIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydCAoU0Vycm9yKS5cXG4rXFx0ICpcXG4rXFx0ICogQWNjZXNzaW5nIHRoZSBYUENTIHJlZ2lzdGVycyBhbHNvIHJlcXVpcmVzIGEgVFggY2xvY2sgZnJvbSB0aGUgU2VyRGVzLFxcbitcXHQgKiB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSBzb2Z0IHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X2luaXQocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24ocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSB4cGNzX3JrX2luaXRfY2xrKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3NfcmtfaW5pdF9idXMocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpwY3NfbnA7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcXG4rXFx0c3RydWN0IGR3X3hwY3MgKnhwY3M7XFxuK1xcdHUzMiBwb3J0O1xcbitcXG4rXFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcbitcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZWdcXFwiLCBcXHUwMDI2cG9ydCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXFxuK1xcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xcbitcXHRpZiAoIXBjc19ucClcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcbitcXHRpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkge1xcbitcXHRcXHRvZl9ub2RlX3B1dChwY3NfbnApO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4rXFx0fVxcbitcXG4rXFx0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0aWYgKCFwZGV2KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcXG4rXFxuK1xcdHB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuK1xcdGlmICghcHhwY3MgfHwgIXB4cGNzLVxcdTAwM2VidXMpIHtcXG4rXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XFxuK1xcdH1cXG4rXFxuK1xcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLVxcdTAwM2VidXMsIChpbnQpcG9ydCk7XFxuK1xcdGlmIChJU19FUlIoeHBjcykpIHtcXG4rXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0XFx0cmV0dXJuIHhwY3M7XFxuK1xcdH1cXG4rXFxuK1xcdGRldmljZV9saW5rX2FkZChkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUik7XFxuK1xcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJldHVybiB4cGNzO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcXG4rXFxuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXG4rXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXG4rXFx0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cXHUwMDNlY3NyX2Nsayk7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB4cGNzX3JrX3BtX29wcyA9IHtcXG4rXFx0U0VUX1JVTlRJTUVfUE1fT1BTKHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxcbitcXHRcXHRcXHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxcbitcXHRcXHRcXHQgICBOVUxMKVxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCIgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7XFxuK1xcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcXG4rXFx0LnByb2JlID0geHBjc19ya19wcm9iZSxcXG4rXFx0LmRyaXZlciA9IHtcXG4rXFx0XFx0Lm5hbWUgPSBcXFwicmtfeHBjcy1kd3hwY3NcXFwiLFxcbitcXHRcXHQucG0gPSBcXHUwMDI2eHBjc19ya19wbV9vcHMsXFxuK1xcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhwY3NfcmtfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkNvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXFxuQEAgLTgxNiw2ICs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xcbitcXHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXFxuIFxcdFxcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxcbiBcXHRcXHRcXHRcXHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSk7XFxuQEAgLTg4NCw3ICs4ODksNyBAQCBzdGF0aWMgaW50IHhwY3NfY29uZmlnX2FuZWdfYzM3XzEwMDBiYXNleChzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFxuIFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpIHtcXG4gXFx0XFx0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXFxuLVxcdFxcdFxcdFxcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcXG4rXFx0XFx0XFx0XFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuQEAgLTEwNTgsNiArMTA2Myw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxcbiBcXG4gXFx0LyogUmVzZXQgbGlua19zdGF0ZSAqL1xcbiBcXHRzdGF0ZS1cXHUwMDNlbGluayA9IGZhbHNlO1xcbitcXHRzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUgPSBmYWxzZTtcXG4gXFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbiBcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSAwO1xcbkBAIC0xMDY5LDYgKzEwNzUsOCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUgPSByZXQgXFx1MDAyNiBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFI7XFxuK1xcbiBcXHRpZiAocmV0IFxcdTAwMjYgRFdfVlJfTUlJX0MzN19BTlNHTV9TUF9MTktTVFMpIHtcXG4gXFx0XFx0aW50IHNwZWVkX3ZhbHVlO1xcbiBcXG5AQCAtMTA4Niw3ICsxMDk0LDI0IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxcbiBcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xcbi1cXHR9IGVsc2UgaWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcXG4rXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbitcXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXFxuK1xcdGlmIChzdGF0ZS1cXHUwMDNlYW5fY29tcGxldGUpXFxuK1xcdFxcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XFxuK1xcbitcXHRpZiAoeHBjcy1cXHUwMDNlaW5mby5wbWEgIT0gV1hfVFhHQkVfWFBDU19QTUFfMTBHX0lEKSB7XFxuK1xcdFxcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xcbitcXHRcXHRpZiAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlKVxcbitcXHRcXHRcXHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxcbitcXHRcXHRcXHRcXHQgICAgQk1DUl9BTlJFU1RBUlQpO1xcbitcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyZXQgPT0gRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSKSB7XFxuIFxcdFxcdGludCBzcGVlZCwgZHVwbGV4O1xcbiBcXG4gXFx0XFx0c3RhdGUtXFx1MDAzZWxpbmsgPSB0cnVlO1xcbkBAIC0xMTEyLDcgKzExMzcsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0XFx0ZWxzZSBpZiAoZHVwbGV4IFxcdTAwMjYgQURWRVJUSVNFXzEwMDBYSEFMRilcXG4gXFx0XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xcbiBcXG4tXFx0XFx0eHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXFxuaW5kZXggMmIwZjE1MmY1NDcwOTEuLmZmMjkwYmMxODU4OWFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXFxuKysrIGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcXG5AQCAtMTg2LDYgKzE4Niw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyB7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5O1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMV9zZWw7XFxuK1xcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3NnbWlpX21hY19zZWw7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xcbiB9O1xcbkBAIC0yMTIsNiArMjEzLDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiB7XFxuIFxcdGJvb2wgZW5hYmxlX3NzYztcXG4gXFx0Ym9vbCBleHRfcmVmY2xrO1xcbiBcXHRzdHJ1Y3QgY2xrICpyZWZjbGs7XFxuK1xcdHUzMiBzZ21paV9tYWNfc2VsO1xcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXFxuQEAgLTM3NSw2ICszNzcsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJwaHlfcGFyc2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeVxcbiBcXG4gXFx0cHJpdi1cXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXFxcInJvY2tjaGlwLGV4dC1yZWZjbGtcXFwiKTtcXG4gXFxuK1xcdHByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwgPSAwO1xcbitcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcXFwicm9ja2NoaXAsc2dtaWktbWFjLXNlbFxcXCIsIFxcdTAwMjZwcml2LVxcdTAwM2VzZ21paV9tYWNfc2VsKTtcXG4rXFxuIFxcdHByaXYtXFx1MDAzZXBoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsIFxcXCJwaHlcXFwiKTtcXG4gXFx0LyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqL1xcbiBcXHRpZiAoUFRSX0VSUihwcml2LVxcdTAwM2VwaHlfcnN0KSA9PSAtRU5PRU5UKVxcbkBAIC04NzMsNiArODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxcbitcXHRcXHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXFx1MDAzZXBpcGVfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3NnbWlpX21hY19zZWwsXFxuK1xcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwgXFx1MDAzZSAwKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaXBlX2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7XFxuIFxcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGh5X2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7XFxuIFxcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGh5X2dyZiwgXFx1MDAyNmNmZy1cXHUwMDNlcGlwZV9zZWxfcXNnbWlpLCB0cnVlKTtcXG5AQCAtOTg0LDYgKzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcXG4gXFx0LmNvbjNfZm9yX3NhdGFcXHRcXHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXFxuIFxcdC8qIHBpcGUtZ3JmICovXFxuIFxcdC5waXBlX2NvbjBfZm9yX3NhdGFcXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXFxuK1xcdC5waXBlX3NnbWlpX21hY19zZWxcXHQ9IHsgMHgwMDQwLCAxLCAxLCAweDAwLCAweDAxIH0sXFxuIFxcdC5waXBlX3hwY3NfcGh5X3JlYWR5XFx0PSB7IDB4MDA0MCwgMiwgMiwgMHgwMCwgMHgwMSB9LFxcbiBcXHQudTNvdGcwX3BvcnRfZW5cXHRcXHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcXG4gXFx0LnUzb3RnMV9wb3J0X2VuXFx0XFx0PSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmggYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjg3MjNkNWJkNzVjY2VcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcbkBAIC0wLDAgKzEsMTEgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbitcXG4rI2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOS4xMDk5MjIxNzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDMyNzc1MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiLFxuICAgIFwiUENTX1hQQ1NcIixcbiAgICBcIlBDU19YUENTX1JPQ0tDSElQXCIsXG4gICAgXCJEV01BQ19ST0NLQ0hJUFwiLFxuICAgIFwiUEhZX1JPQ0tDSElQX05BTkVOR19DT01CT19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paVwiLFxuICAgIFwieHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4XCIsXG4gICAgXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcIixcbiAgICBcImludGVsX21nYmVfcGNzX2luaXRcIixcbiAgICBcInN0bW1hY19wY3Nfc2V0dXBcIixcbiAgICBcInJrX3Bjc19pbml0XCIsXG4gICAgXCJ4cGNzX3JrX3Byb2JlXCIsXG4gICAgXCJ4cGNzX3JrX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIFJvY2tjaGlwIFJLMzU2OCBYUENTLCB3aGljaCBpbmNsdWRlcyBhIG5ldyBwbGF0Zm9ybSBkcml2ZXIgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGdlbmVyaWMgcGNzLXhwY3MgZHJpdmVyIGFuZCBzdG1tYWMgZHJpdmVyLiBXaGlsZSB0aGUgUm9ja2NoaXAtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIGhvdyB0aGUgUENTIGlzIGluaXRpYWxpemVkIGluIHRoZSBnZW5lcmljIHN0bW1hYyBkcml2ZXIgYW5kIG1vZGlmaWVzIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGR3bWFjLWludGVsLmMpIHRvIHVzZSB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCBpdCBtb2RpZmllcyB0aGUgZ2VuZXJpYyBwY3MteHBjcy5jIGRyaXZlcidzIGF1dG8tbmVnb3RpYXRpb24gYW5kIHN0YXRlIHBvbGxpbmcgbG9naWMgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRoZXNlIGdlbmVyaWMgYW5kIFBDSS1iYXNlZCBjaGFuZ2VzIGFyZSByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIGludGVyZmFjZSBtYW5pcHVsYXRpb24sIG1ha2luZyB0aGUgcGF0Y2ggd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MTkzZWQwZTBhYWNmNGQzNTk3NGM1MjNiZDQ1MzYwZjk4YzUyZThkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjE0ZmFkZjY3Yzc5M2E4XG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuQEAgLTAsMCArMSwxMjYgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwjXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4rXG4rdGl0bGU6IFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBDU1xuK1xuK21haW50YWluZXJzOlxuKyAgLSBDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgUm9ja2NoaXAgUkszNTY4IFNvQyBpbnRlZ3JhdGVzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbFxuKyAgQ29kaW5nIFN1YmxheWVyIChYUENTKS5cbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXG4rICBhbmQgdGhlIFBoeXNpY2FsIE1lZGl1bSBBdHRhY2htZW50IChQTUEpIHN1YmxheWVyIHRocm91Z2ggYSBNZWRpYVxuKyAgSW5kZXBlbmRlbnQgSW50ZXJmYWNlIChHTUlJKS5cbitcbisgIFRoZSBYUENTIGlzIGFjY2Vzc2VkIG92ZXIgdGhlIEFQQjMgYnVzIGFuZCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBhXG4rICBOYW5lbmcgQ29tYm8gU2VyRGVzIFBIWS5cbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXG4rXG4rICBUaGUgYmxvY2sgY29udGFpbnMgZm91ciBNSUkgcG9ydHMgKHBjcy1taWlAMC4uMykgdGhhdCBjYW4gYmVcbisgIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZCByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzXG4rICB2aWEgdGhlIHBjcy1oYW5kbGUgcHJvcGVydHkgaW4gdGhlIE1BQyBkZXZpY2UgdHJlZSBub2RlLlxuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcm9ja2NoaXAscmszNTY4LXhwY3NcbitcbisgICcjYWRkcmVzcy1jZWxscyc6XG4rICAgIGNvbnN0OiAxXG4rXG4rICAnI3NpemUtY2VsbHMnOlxuKyAgICBjb25zdDogMFxuK1xuKyAgcmVnOlxuKyAgICBkZXNjcmlwdGlvbjogfFxuKyAgICAgIEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgWFBDUyByZWdpc3RlciBzcGFjZSBtYXBwZWQgb3ZlciB0aGVcbisgICAgICBBUEIzIGJ1cy5cbisgICAgbWF4SXRlbXM6IDFcbitcbisgIGNsb2NrczpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBDbG9jayBzb3VyY2VzIGZvciB0aGUgWFBDUzpcbisgICAgICAtIGNzcjogQVBCMyBidXMgaW50ZXJmYWNlIGNsb2NrIChjbGtfY3NyX2kpLCByZXF1aXJlZCBmb3IgcmVnaXN0ZXJcbisgICAgICAgIGFjY2Vzcy5cbisgICAgICAtIGVlZTogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudFxuKyAgICAgICAgRXRoZXJuZXQgKEVFRSkgb3BlcmF0aW9uLlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgY2xvY2stbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IGNzclxuKyAgICAgIC0gY29uc3Q6IGVlZVxuK1xuKyAgcGh5czpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBUaGUgcGhhbmRsZSBvZiBTZXJEZXMgUEhZIChOYW5lbmcgQ29tYm8gUEhZKSB0aGF0IHByb3ZpZGVzXG4rICAgICAgdGhlIHNlcmlhbCBsYW5lcyBmb3IgMTAwMEJBU0UtWCAvIFNHTUlJIC8gUVNHTUlJLlxuKyAgICAgIFRoZSBTZXJEZXMgbXVzdCBiZSBwb3dlcmVkIG9uIGFuZCBpbml0aWFsaXNlZCBiZWZvcmUgYW55IFhQQ1NcbisgICAgICByZWdpc3RlciBhY2Nlc3MuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBwaHktbmFtZXM6XG4rICAgIGNvbnN0OiBzZXJkZXNcbitcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIGRlc2NyaXB0aW9uOiB8XG4rICAgICAgUG93ZXIgZG9tYWluIGZvciB0aGUgWFBDUy5cbisgICAgICBPbiBSSzM1NjggdGhpcyBpcyB0eXBpY2FsbHkgdGhlIFBEX1BJUEUgcG93ZXIgZG9tYWluLCB3aGljaCBhbHNvXG4rICAgICAgc3VwcGxpZXMgdGhlIFNlckRlcyBQSFkuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rcGF0dGVyblByb3BlcnRpZXM6XG4rICBcIl5wY3MtbWlpQFswLTNdJFwiOlxuKyAgICB0eXBlOiBvYmplY3RcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBPbmUgb2YgdGhlIGZvdXIgTUlJIHBvcnRzIG9mIHRoZSBYUENTLlxuKyAgICAgIFRoZSBwb3J0IG51bWJlciBpcyBzcGVjaWZpZWQgYnkgdGhlIHJlZyBwcm9wZXJ0eSAoMC4uMykuXG4rICAgICAgVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGVcbisgICAgICBwY3MtaGFuZGxlIHByb3BlcnR5IGluIHRoZSBNQUMncyBkZXZpY2UgdHJlZSBub2RlLlxuK1xuKyAgICBwcm9wZXJ0aWVzOlxuKyAgICAgIHJlZzpcbisgICAgICAgIG1pbmltdW06IDBcbisgICAgICAgIG1heGltdW06IDNcbisgICAgICAgIGRlc2NyaXB0aW9uOiB8XG4rICAgICAgICAgIE1JSSBwb3J0IG51bWJlciBvZiBQQ1MuXG4rXG4rICAgICAgc3RhdHVzOiB0cnVlXG4rXG4rICAgIHJlcXVpcmVkOlxuKyAgICAgIC0gcmVnXG4rXG4rICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK3JlcXVpcmVkOlxuKyAgLSBjb21wYXRpYmxlXG4rICAtIHJlZ1xuKyAgLSBjbG9ja3NcbisgIC0gY2xvY2stbmFtZXNcbitcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcdTAwM2VcbitcbisgICAgcGNzQGZkYTAwMDAwIHtcbisgICAgICBjb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1NjgteHBjc1wiO1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgcmVnID0gXHUwMDNjMHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwXHUwMDNlO1xuKyAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4rICAgICAgY2xvY2stbmFtZXMgPSBcImNzclwiLCBcImVlZVwiO1xuKyAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVx1MDAzZTtcbisgICAgICBwaHktbmFtZXMgPSBcInNlcmRlc1wiO1xuKyAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVx1MDAzZTtcbitcbisgICAgICBwY3MtbWlpQDAge1xuKyAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbisgICAgICB9O1xuKyAgICB9O1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5pbmRleCAzNzliMDhiZDllOTdhNi4uNjE3MzE5MmUzMWFiMmYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5AQCAtODAsNiArODAsMTMgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbisgICAgZW51bTogWzAsIDFdXG4rICAgIGRlZmF1bHQ6IDBcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbitcbiAgIFwiI3BoeS1jZWxsc1wiOlxuICAgICBjb25zdDogMVxuIFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44Y2JhNmEwYTJkZDAzNCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTIzNDYzLDYgKzIzNDYzLDE1IEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWxcbiBGOlx0c291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qXG4gXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcbitNOlx0Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4rTDpcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcbitMOlx0bGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZ1xuK1M6XHRNYWludGFpbmVkXG4rRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG4rRjpcdGRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG4rRjpcdGluY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbitcbiBST0NLRVIgRFJJVkVSXG4gTTpcdEppcmkgUGlya28gXHUwMDNjamlyaUByZXNudWxsaS51c1x1MDAzZVxuIEw6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuaW5kZXggNThjMTA1MmJhOGVmMzUuLjkxYzE3YjYyNGZkMTdkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG5AQCAtMyw2ICszLDcgQEBcbiAvZHRzLXYxLztcbiBcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCJyazM1NjguZHRzaVwiXG5AQCAtMjQyLDYgKzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbitcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgKzI2MiwxOCBAQCBcdTAwMjZjcHUzIHtcbiBcdGNwdS1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfY3B1XHUwMDNlO1xuIH07XG4gXG4tLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0IChyZXF1aXJlIFNHTUlJKSAqL1xuKy8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAqL1xuIFx1MDAyNmdtYWMwIHtcbi1cdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdGFzc2lnbmVkLWNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBTQ0xLX0dNQUMwX1JYX1RYXHUwMDNlO1xuK1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuK1x0cGNzLWhhbmRsZSA9IFx1MDAzY1x1MDAyNnhwY3NfbWlpMFx1MDAzZTtcbitcdG1hbmFnZWQgPSBcImluLWJhbmQtc3RhdHVzXCI7XG4rXHRwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2c2dtaWlfcGh5XHUwMDNlO1xuK1x0cGh5LW1vZGUgPSBcInNnbWlpXCI7XG4rXHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbitcdHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbitcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmdtYWMwX21paW1cdTAwM2U7XG4rXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiB9O1xuIFxuIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqL1xuQEAgLTM0MSw2ICszNTIsMzkgQEAgXHUwMDI2aTJzMF84Y2gge1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4gfTtcbiBcbitcdTAwMjZtZGlvMCB7XG4rXHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZXRoZXJuZXQtcGh5LWlkMDAwMC4wMTFhXCI7XG4rXHRcdHJlZyA9IFx1MDAzYzB4M1x1MDAzZTtcbitcdFx0bWF4LXNwZWVkID0gXHUwMDNjMTAwMFx1MDAzZTtcbitcdFx0ZWVlLWJyb2tlbi0xMGd0O1xuK1x0XHRlZWUtYnJva2VuLTEwZ2t4NDtcbitcdFx0ZWVlLWJyb2tlbi0xMGdrcjtcbitcdFx0cmVzZXQtYXNzZXJ0LXVzID0gXHUwMDNjMjAwMDBcdTAwM2U7XG4rXHRcdHJlc2V0LWRlYXNzZXJ0LXVzID0gXHUwMDNjMTAwMDAwXHUwMDNlO1xuK1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4rXG4rXHRcdGxlZHMge1xuK1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rXHRcdFx0bGVkQDEge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXG4rXHRcdFx0bGVkQDIge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXHRcdH07XG4rXHR9O1xuK307XG4rXG4gXHUwMDI2bWRpbzEge1xuIFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdGNvbXBhdGlibGUgPSBcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXCI7XG5AQCAtMzUwLDYgKzM5NCwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiBcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuIFx0XHRyeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4gXHRcdHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMTUwMFx1MDAzZTtcbitcbitcdFx0bGVkcyB7XG4rXHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbitcdFx0XHRsZWRAMSB7XG4rXHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcdTAwM2U7XG4rXHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4rXHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCJrZWVwXCI7XG4rXHRcdFx0fTtcbitcbitcdFx0XHRsZWRAMiB7XG4rXHRcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdFx0Y29sb3IgPSBcdTAwM2NMRURfQ09MT1JfSURfR1JFRU5cdTAwM2U7XG4rXHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4rXHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCJrZWVwXCI7XG4rXHRcdFx0fTtcbitcdFx0fTtcbiBcdH07XG4gfTtcbiBcbkBAIC01ODYsMyArNjQ5LDEzIEBAIFx1MDAyNnhpbjMyayB7XG4gXHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4gXHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZjbGszMmtfb3V0MVx1MDAzZTtcbiB9O1xuK1xuK1x1MDAyNnhwY3Mge1xuK1x0c3RhdHVzID0gXCJva2F5XCI7XG4rXHRwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4rXHRwaHktbmFtZXMgPSBcInNlcmRlc1wiO1xuK307XG4rXG4rXHUwMDI2eHBjc19taWkwIHtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuK307XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbmluZGV4IDNiYzY1M2YwMjdmMWZlLi45ODllMTY0YzBlYjM5OCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbkBAIC0xMTAsNiArMTEwLDUxIEBAIHNhdGEwOiBzYXRhQGZjMDAwMDAwIHtcbiBcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuIFx0fTtcbiBcbitcdHhwY3M6IHBjc0BmZGEwMDAwMCB7XG4rXHRcdGNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC14cGNzXCI7XG4rXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0XHRyZWcgPSBcdTAwM2MweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDBcdTAwM2U7XG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4rXHRcdGNsb2NrLW5hbWVzID0gXCJjc3JcIiwgXCJlZWVcIjtcbitcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuK1x0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXG4rXHRcdHhwY3NfbWlpMDogcGNzLW1paUAwIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcbitcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1xuK1x0XHR4cGNzX21paTI6IHBjcy1taWlAMiB7XG4rXHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXHRcdH07XG4rXG4rXHRcdHhwY3NfbWlpMzogcGNzLW1paUAzIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcdH07XG4rXG4rXHR4cGNzX2dtYWMwX2NsazogeHBjcy1nbWFjMC1jbG9jayB7XG4rXHRcdGNvbXBhdGlibGUgPSBcImZpeGVkLWNsb2NrXCI7XG4rXHRcdGNsb2NrLWZyZXF1ZW5jeSA9IFx1MDAzYzEyNTAwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCJjbGtfZ21hYzBfeHBjc19taWlcIjtcbitcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcdH07XG4rXG4rXHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4rXHRcdGNvbXBhdGlibGUgPSBcImZpeGVkLWNsb2NrXCI7XG4rXHRcdGNsb2NrLWZyZXF1ZW5jeSA9IFx1MDAzYzEyNTAwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCJjbGtfZ21hYzFfeHBjc19taWlcIjtcbitcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcdH07XG4rXG4gXHRwaXBlX3BoeV9ncmYwOiBzeXNjb25AZmRjNzAwMDAge1xuIFx0XHRjb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmXCIsIFwic3lzY29uXCI7XG4gXHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYzcwMDAwIDB4MCAweDEwMDBcdTAwM2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbmluZGV4IGUzZGQ1YWRkYTVhY2FmLi41MDg4YWNjMDY5ODJlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4rXHRzZWxlY3QgUENTX1hQQ1NfUk9DS0NISVBcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uMDgxMzIzYzMyYmNjMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTcyLDEzICs1NzIsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gXHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlbmVlZHNfcmVzZXQgPSB0cnVlO1xuIH1cbiBcbitzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTtcbitcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbitcdGludCBhZGRyO1xuK1xuK1x0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuK1xuK1x0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuK1x0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbitcdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRhZGRyID0gZmZzKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSAtIDE7XG4rXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXHUwMDNlbWlpLCBhZGRyKTtcbitcdH1cbitcbitcdGlmIChJU19FUlIoeHBjcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuK1xuK1x0eHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgaW50ZWxfbWdiZV9wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4rXHRcdHJldHVybjtcbitcbitcdHhwY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4tXHQvKiBwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXG4tXHQgKiBzaG91bGQgYWx3YXlzIGJlIGFuIFhQQ1MuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGFsd2F5c1xuLVx0ICogcmV0dXJuIHRoaXMgaWYgcHJlc2VudC5cbi1cdCAqL1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuIFx0cmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiB9XG4gXG5AQCAtNzAyLDYgKzczNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdCAgICBwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xuIFx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2sgPSBCSVRfVTMyKElOVEVMX01HQkVfWFBDU19BRERSKTtcbiBcdFx0cGxhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXQtXHUwMDNlcGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0O1xuK1x0XHRwbGF0LVx1MDAzZXBjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDtcbiBcdFx0cGxhdC1cdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuaW5kZXggMTlmMzRlMThiZmVmMmMuLjlhZjMyYzI2ZjljMTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbkBAIC04MSw4ICs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmVuZXNhc19nbWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5pbmRleCA4ZDcwNDJlNjg5MjYxOS4uZWNhNDgyYjRiNmJmYzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xuIFx0dm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XG4gXHR2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbitcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuK1x0Ym9vbCBzdXBwb3J0c19zZ21paTtcbiBcdGJvb2wgcGhwX2dyZl9yZXF1aXJlZDtcbiBcdGJvb2wgcmVnc192YWxpZDtcbiBcdHUzMiByZWdzW107XG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbitcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXHRcdDB4MDM4Y1xuIFxuIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSBcdTAwMjZcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xuIFxuIFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSxcbitcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuK3tcbitcdHUzMiBjb24xO1xuK1xuK1x0Y29uMSA9IChic3BfcHJpdi1cdTAwM2VpZCA9PSAxKSA/IFJLMzU2OF9HUkZfR01BQzFfQ09OMSA6XG4rXHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbitcbitcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuK1x0LnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksXG4rXG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuK1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldiwgXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwiKTtcbiB9XG4gXG4rc3RhdGljIGludCBya19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXG4rXHRwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdGlmICghcGNzX25vZGUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0eHBjcyA9IHhwY3NfcmtfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG4rXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcmtfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFxuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcmdtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JnbWlpO1xuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19ybWlpO1xuK1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCIsIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSw2ICsxNDQxLDkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuK1x0aWYgKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4rXHRcdGdvdG8gc2V0X21vZGU7XG4rXG4gXHRyZXQgPSBya19nZXRfcGh5X2ludGZfc2VsKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE0MTYsNyArMTQ4MSw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHQvKnJtaWkgb3IgcmdtaWkqL1xuK3NldF9tb2RlOlxuK1x0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXG4gXHRzd2l0Y2ggKGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4gXHRcdGRldl9pbmZvKGRldiwgXCJpbml0IGZvciBSR01JSVxcblwiKTtcbkBAIC0xNDQ3LDYgKzE1MTMsMTEgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGlmIChic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkpXG4gXHRcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19ybWlpKGJzcF9wcml2KTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbitcdFx0ZGV2X2luZm8oZGV2LCBcImluaXQgZm9yIFNHTUlJXFxuXCIpO1xuK1x0XHRpZiAoYnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZXNldF90b19zZ21paSlcbitcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3NnbWlpKGJzcF9wcml2KTtcbitcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGRldiwgXCJOTyBpbnRlcmZhY2UgZGVmaW5lZCFcXG5cIik7XG4gXHR9XG5AQCAtMTQ4Niw2ICsxNTU3LDkgQEAgc3RhdGljIHZvaWQgcmtfZ2V0X2ludGVyZmFjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkICpic3BfcHJpdixcbiBcbiBcdGlmIChyay1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xuK1xuK1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTtcbiB9XG4gXG4gc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbkBAIC0xNjAyLDYgKzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4rXHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbitcdFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuK1xuK1x0XHQvKiBTR01JSSByZXF1aXJlcyBhIFBDUyAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19leGl0ID0gcmtfcGNzX2V4aXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuK1x0fVxuK1xuIFx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5pbmRleCAxMzYzNDk2NWJjMTlhMS4uMDFkZjQ3NzZlZGIzZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuQEAgLTM1LDggKzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJ6bjFfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5pbmRleCAxZDdmMGE1N2QyODg5Ny4uNmQ0YmMxZmU4Zjc1MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuQEAgLTUzOSw4ICs1MzksMTEgQEAgc3RhdGljIGludCBzb2NmcGdhX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbitcdFx0cmV0dXJuO1xuK1xuK1x0bHlueF9wY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5pbmRleCBhZmU5OGZmNWJkY2IwNS4uZDJmNzdmMGMyMjNhNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuLVx0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuK1x0aW50IHJldDtcbitcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbitcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2aWNlLCByZXQsIFwiTm8geFBDUyBmb3VuZFxcblwiKTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgKzQ0MiwxMCBAQCB2b2lkIHN0bW1hY19wY3NfY2xlYW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuLVx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rXHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGFkLi4zMjg2YmM5M2U3MDI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuQEAgLTEyLDYgKzEyLDI4IEBAIGNvbmZpZyBQQ1NfWFBDU1xuIFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGRyaXZlciBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgU3lub3BzeXNcbiBcdCAgRGVzaWduV2FyZSBYUENTIGNvbnRyb2xsZXJzLlxuIFxuK2lmIFBDU19YUENTXG4rXG4rY29uZmlnIFBDU19YUENTX1BMQVRGT1JNXG4rXHR0cmlzdGF0ZSBcIkdlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcIlxuK1x0ZGVmYXVsdCBQQ1NfWFBDU1xuK1x0aGVscFxuK1x0ICBHZW5lcmljIERXWFBDUyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XG4rXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cbitcdCAgZGF0YSBmb3Igc2V0dXAuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4rXG4rY29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4rXHR0cmlzdGF0ZSBcIlJvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCJcbitcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbitcdGhlbHBcbitcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbitcbitlbmRpZiAjIFBDU19YUENTXG4rXG4gY29uZmlnIFBDU19MWU5YXG4gXHR0cmlzdGF0ZVxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuaW5kZXggNGY3OTIwNjE4YjkwMDUuLmM4MDliN2Y5NDJhNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbkBAIC0xLDEwICsxLDkgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcbiBcbi1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUylcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXG4tXHRcdFx0XHQgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4tXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVx0XHQrPSBwY3NfeHBjcy5vXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cbitvYmotJChDT05GSUdfUENTX1hQQ1NfUExBVEZPUk0pICs9IHBjcy14cGNzLXBsYXQub1xuK29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJUCkgKz0gcGNzLXhwY3Mtcmsub1xuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcdFx0Kz0gcGNzLWx5bngub1xuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVx0Kz0gcGNzLW10ay1seW54aS5vXG4gb2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQrPSBwY3MtcnpuMS1taWljLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVkOTY5YTM4ZDU0NGQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuQEAgLTAsMCArMSw1MjYgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qXG4rICogUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXG4rICpcbisgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cbisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgU2VyZ2UgU2VtaW5cbisgKlxuKyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBDb2lhIFByYW50XG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MtcmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zaXplcy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJwY3MteHBjcy5oXCJcbitcbitzdHJ1Y3QgZHdfeHBjc19yayB7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cztcbitcdHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7XG4rXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuK1x0c3RydWN0IGNsayAqY3NyX2NsaztcbitcdHN0cnVjdCBjbGsgKmVlZV9jbGs7XG4rfTtcbitcbitzdGF0aWMgcHRyZGlmZl90IHhwY3NfcmtfYWRkcl9mb3JtYXQoaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0cHRyZGlmZl90IGNzcjtcbitcdGludCByZXQ7XG4rXG4rXHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcbitcbitcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHJlYWRsKHB4cGNzLVx1MDAzZXJlZ19iYXNlICsgKGNzciBcdTAwM2NcdTAwM2MgMikpIFx1MDAyNiAweGZmZmY7XG4rXG4rXHRwbV9ydW50aW1lX3B1dChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRwdHJkaWZmX3QgY3NyO1xuK1x0aW50IHJldDtcbitcbitcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0d3JpdGVsKHZhbCwgcHhwY3MtXHUwMDNlcmVnX2Jhc2UgKyAoY3NyIFx1MDAzY1x1MDAzYyAyKSk7XG4rXG4rXHRwbV9ydW50aW1lX3B1dChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVx0MlxuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTJcdDNcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkzXHQ0XG4rI2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXHQ2XG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJXHQ3XG4rXG4rc3RhdGljIGJvb2wgeHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoaW50IGFkZHIpXG4re1xuK1x0cmV0dXJuICEoYWRkciBcdTAwM2MgMCB8fCBhZGRyIFx1MDAzZSAzKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3dpdGNoIChkZXYpIHtcbitcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbitcdGNhc2UgTURJT19NTURfVkVORDI6XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTlhJTztcbitcdH1cbitcbitcdHN3aXRjaCAoYWRkcikge1xuK1x0Y2FzZSAwOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbitcdGNhc2UgMTpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xuK1x0Y2FzZSAyOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4rXHRjYXNlIDM6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3dpdGNoIChkZXYpIHtcbitcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcbitcdGNhc2UgTURJT19NTURfVkVORDI6XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTlhJTztcbitcdH1cbitcbitcdC8qIFdyaXRhYmxlIG9ubHkgb24gTUlJICovXG4rXHRzd2l0Y2ggKHJlZykge1xuK1x0Y2FzZSBEV19WUl9NSUlfQU5fQ1RSTDpcbitcdGNhc2UgRFdfVlJfTUlJX0FOX0lOVFJfU1RTOlxuK1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbitcdGNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDE6XG4rXHRjYXNlIERXX1ZSX01JSV9ESUdfQ1RSTDI6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuK1x0ZGVmYXVsdDpcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rXHRzd2l0Y2ggKGFkZHIpIHtcbitcdGNhc2UgMDpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XG4rXHRjYXNlIDE6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbitcdGNhc2UgMjpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuK1x0Y2FzZSAzOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0aW50IGRldjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuK1x0aWYgKGRldiBcdTAwM2MgMClcbitcdFx0cmV0dXJuIDB4ZmZmZjtcbitcbitcdHJldHVybiB4cGNzX3JrX3JlYWRfcmVnKHB4cGNzLCBkZXYsIHJlZyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXHRpbnQgZGV2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuK1x0aWYgKGRldiBcdTAwM2MgMClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMHhmZmZmO1xuK1xuK1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgZHdfeHBjc19yayAqeHBjc19ya19jcmVhdGVfZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbitcbitcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXB4cGNzKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHB4cGNzLVx1MDAzZXBkZXYgPSBwZGV2O1xuK1xuK1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4rXG4rXHRyZXR1cm4gcHhwY3M7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X2luaXQoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1xuK1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwic2VyZGVzXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpLFxuK1x0XHRcdFx0XHRcIkZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwiKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXG4rXHRwaHlfcG93ZXJfb2ZmKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuK1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXG4rXHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCB0cnVlKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfaW5pdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxcblwiKTtcbitcdFx0Z290byBwbV9kb21haW47XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfcG93ZXJfb24ocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXFxuXCIpO1xuK1x0XHRnb3RvIHNlcmRlc19waHk7XG4rXHR9XG4rXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXFxuXCIsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbitcbitzZXJkZXNfcGh5OlxuK1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rcG1fZG9tYWluOlxuK1x0ZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBweHBjcy1cdTAwM2VwZGV2O1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4rXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbitcbitcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7XG4rXHRpZiAoIXJlcykge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJObyByZWctc3BhY2UgZm91bmRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0aWYgKHJlc291cmNlX3NpemUocmVzKSBcdTAwM2MgU1pfMk0pIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiSW52YWxpZCByZWctc3BhY2Ugc2l6ZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gbWFwIHJlZy1zcGFjZVxcblwiKTtcbitcdFx0cmV0dXJuIFBUUl9FUlIocHhwY3MtXHUwMDNlcmVnX2Jhc2UpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3NfcmtfZXhpdF9jbGsodm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuK1xuK1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0aW50IHJldDtcbitcbitcdHB4cGNzLVx1MDAzZWNzcl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcImNzclwiKTtcbitcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlY3NyX2NsaykpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSxcbitcdFx0XHRcdFx0IFwiRmFpbGVkIHRvIGdldCBDU1IgY2xvY2tcXG5cIik7XG4rXG4rXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcbitcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cHhwY3MtXHUwMDNlZWVlX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwiZWVlXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VlZWVfY2xrKSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspLFxuK1x0XHRcdFx0XHQgXCJGYWlsZWQgdG8gZ2V0IEVFRSBjbG9ja1xcblwiKTtcbitcbitcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2VlZWVfY2xrKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGVuYWJsZSBFRUUgY2xvY2tcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX2V4aXRfY2xrLCBweHBjcyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxuXCIsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcdHN0YXRpYyBhdG9taWNfdCBpZCA9IEFUT01JQ19JTklUKC0xKTtcbitcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4rXHRpbnQgcmV0O1xuK1xuK1x0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcbitcdGlmICghYnVzKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdGJ1cy1cdTAwM2VuYW1lID0gXCJSb2NrY2hpcCBEVyBYUENTIE1DSS9BUEIzXCI7XG4rXHRidXMtXHUwMDNlcmVhZCA9IHhwY3NfcmtfcmVhZF9jMjI7XG4rXHRidXMtXHUwMDNld3JpdGUgPSB4cGNzX3JrX3dyaXRlX2MyMjtcbitcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XG4rXHRidXMtXHUwMDNld3JpdGVfYzQ1ID0geHBjc19ya193cml0ZV9jNDU7XG4rXHRidXMtXHUwMDNlcGh5X21hc2sgPSB+MDtcbitcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4rXHRidXMtXHUwMDNlcHJpdiA9IHB4cGNzO1xuK1xuK1x0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsXG4rXHRcdCBcInJvY2tjaGlwX2R3eHBjcy0leFwiLCBhdG9taWNfaW5jX3JldHVybihcdTAwMjZpZCkpO1xuK1xuK1x0LypcbitcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XG4rXHQgKiB0aGUgTURJTyBhbmQgTUNJL0FQQjMgSU8gaW50ZXJmYWNlcyB1dGlsaXplZCBmb3IgdGhlIFJvY2tjaGlwIERXWFBDUyBDU1JzXG4rXHQgKiBhY2Nlc3MuXG4rXHQgKi9cbitcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBjcmVhdGUgTURJTyBidXNcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VidXMgPSBidXM7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1x0aW50IHJldDtcbitcbitcdHB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTtcbitcdGlmIChJU19FUlIocHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcyk7XG4rXG4rXHQvKlxuK1x0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXG4rXHQgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGxcbitcdCAqIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydCAoU0Vycm9yKS5cbitcdCAqXG4rXHQgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsXG4rXHQgKiB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSBzb2Z0IHJlc2V0LlxuK1x0ICovXG4rXHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb24ocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IHhwY3NfcmtfaW5pdF9idXMocHhwY3MpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuK3tcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbitcdHN0cnVjdCBkd194cGNzICp4cGNzO1xuK1x0dTMyIHBvcnQ7XG4rXG4rXHRpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUobnApKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbitcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCJyZWdcIiwgXHUwMDI2cG9ydCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXG4rXHRwY3NfbnAgPSBvZl9nZXRfcGFyZW50KG5wKTtcbitcdGlmICghcGNzX25wKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbitcbitcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwY3NfbnApKSB7XG4rXHRcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1x0fVxuK1xuK1x0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcbitcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4rXHRpZiAoIXBkZXYpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuK1xuK1x0cHhwY3MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbitcdGlmICghcHhwY3MgfHwgIXB4cGNzLVx1MDAzZWJ1cykge1xuK1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXHR9XG4rXG4rXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cdTAwM2VidXMsIChpbnQpcG9ydCk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKSB7XG4rXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRyZXR1cm4geHBjcztcbitcdH1cbitcbitcdGRldmljZV9saW5rX2FkZChkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpO1xuK1x0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRyZXR1cm4geHBjcztcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpO1xuK1xuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuK1xuK1x0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVx1MDAzZWNzcl9jbGspO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4rXG4rXHRyZXR1cm4gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWNzcl9jbGspO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgeHBjc19ya19wbV9vcHMgPSB7XG4rXHRTRVRfUlVOVElNRV9QTV9PUFMoeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZSxcbitcdFx0XHQgICBOVUxMKVxuK307XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC14cGNzXCIgfSxcbitcdHsgLyogc2VudGluZWwgKi8gfSxcbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcbitcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicmtfeHBjcy1kd3hwY3NcIixcbitcdFx0LnBtID0gXHUwMDI2eHBjc19ya19wbV9vcHMsXG4rXHRcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxuK1x0fSxcbit9O1xuK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoeHBjc19ya19kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIlJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbmluZGV4IGU2OWZhMmYwYTBlOGQ4Li5jZjM3MGJhMjQ3Y2FjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw2ICs4MTYsMTEgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xuK1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbiBcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbkBAIC04ODQsNyArODg5LDcgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXgoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKSB7XG4gXHRcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxuLVx0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xuK1x0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xMDU4LDYgKzEwNjMsNyBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcbiBcdC8qIFJlc2V0IGxpbmtfc3RhdGUgKi9cbiBcdHN0YXRlLVx1MDAzZWxpbmsgPSBmYWxzZTtcbitcdHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID0gZmFsc2U7XG4gXHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4gXHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbiBcdHN0YXRlLVx1MDAzZXBhdXNlID0gMDtcbkBAIC0xMDY5LDYgKzEwNzUsOCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA9IHJldCBcdTAwMjYgRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSO1xuK1xuIFx0aWYgKHJldCBcdTAwMjYgRFdfVlJfTUlJX0MzN19BTlNHTV9TUF9MTktTVFMpIHtcbiBcdFx0aW50IHNwZWVkX3ZhbHVlO1xuIFxuQEAgLTEwODYsNyArMTA5NCwyNCBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdFx0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiBcdFx0ZWxzZVxuIFx0XHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9IQUxGO1xuLVx0fSBlbHNlIGlmIChyZXQgPT0gRFdfVlJfTUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSKSB7XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuK1x0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuK1x0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuK1xuK1x0aWYgKHhwY3MtXHUwMDNlaW5mby5wbWEgIT0gV1hfVFhHQkVfWFBDU19QTUFfMTBHX0lEKSB7XG4rXHRcdC8qIElmIHRoZSBsaW5rIGRvd24sIHJlc3RhcnQgQXV0by1OZWdvdGlhdGlvbiAqL1xuK1x0XHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4rXHRcdFx0eHBjc19tb2RpZnkoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLCBCTUNSX0FOUkVTVEFSVCxcbitcdFx0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4rXG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0aWYgKHJldCA9PSBEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lOVFIpIHtcbiBcdFx0aW50IHNwZWVkLCBkdXBsZXg7XG4gXG4gXHRcdHN0YXRlLVx1MDAzZWxpbmsgPSB0cnVlO1xuQEAgLTExMTIsNyArMTEzNyw3IEBAIHN0YXRpYyBpbnQgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKHN0cnVjdCBkd194cGNzICp4cGNzLFxuIFx0XHRlbHNlIGlmIChkdXBsZXggXHUwMDI2IEFEVkVSVElTRV8xMDAwWEhBTEYpXG4gXHRcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG4gXG4tXHRcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XG4rXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuaW5kZXggMmIwZjE1MmY1NDcwOTEuLmZmMjkwYmMxODU4OWFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbisrKyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5AQCAtMTg2LDYgKzE4Niw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyB7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV94cGNzX3BoeV9yZWFkeTtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfcGNpZTFsMV9zZWw7XG4rXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMV9wb3J0X2VuO1xuIH07XG5AQCAtMjEyLDYgKzIxMyw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYge1xuIFx0Ym9vbCBlbmFibGVfc3NjO1xuIFx0Ym9vbCBleHRfcmVmY2xrO1xuIFx0c3RydWN0IGNsayAqcmVmY2xrO1xuK1x0dTMyIHNnbWlpX21hY19zZWw7XG4gfTtcbiBcbiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdixcbkBAIC0zNzUsNiArMzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlcbiBcbiBcdHByaXYtXHUwMDNlZXh0X3JlZmNsayA9IGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgXCJyb2NrY2hpcCxleHQtcmVmY2xrXCIpO1xuIFxuK1x0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsID0gMDtcbitcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwicm9ja2NoaXAsc2dtaWktbWFjLXNlbFwiLCBcdTAwMjZwcml2LVx1MDAzZXNnbWlpX21hY19zZWwpO1xuK1xuIFx0cHJpdi1cdTAwM2VwaHlfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBcInBoeVwiKTtcbiBcdC8qIGZhbGxiYWNrIHRvIG9sZCBiZWhhdmlvdXIgKi9cbiBcdGlmIChQVFJfRVJSKHByaXYtXHUwMDNlcGh5X3JzdCkgPT0gLUVOT0VOVClcbkBAIC04NzMsNiArODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxuK1x0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGlwZV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3NnbWlpX21hY19zZWwsXG4rXHRcdFx0XHRcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCBcdTAwM2UgMCk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaXBlX2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfeHBjc19waHlfcmVhZHksIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfcGh5bW9kZV9zZWwsIHRydWUpO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGh5X2dyZiwgXHUwMDI2Y2ZnLVx1MDAzZXBpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7XG5AQCAtOTg0LDYgKzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcbiBcdC5jb24zX2Zvcl9zYXRhXHRcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcbiBcdC8qIHBpcGUtZ3JmICovXG4gXHQucGlwZV9jb24wX2Zvcl9zYXRhXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXG4rXHQucGlwZV9zZ21paV9tYWNfc2VsXHQ9IHsgMHgwMDQwLCAxLCAxLCAweDAwLCAweDAxIH0sXG4gXHQucGlwZV94cGNzX3BoeV9yZWFkeVx0PSB7IDB4MDA0MCwgMiwgMiwgMHgwMCwgMHgwMSB9LFxuIFx0LnUzb3RnMF9wb3J0X2VuXHRcdD0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxuIFx0LnUzb3RnMV9wb3J0X2VuXHRcdD0geyAweDAxNDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmggYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NlXG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG5AQCAtMCwwICsxLDExIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSFxuKyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLmhcdTAwM2VcbitcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbitcbisjZW5kaWYgLyogX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOS4xMDk5MjQxMzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM4NzgyNjcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBTZXJpZXMgQW5hbHlzaXMgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTIChYUENTKS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMsIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuRmlyc3RseSwgdGhlIFJvY2tjaGlwLXNwZWNpZmljIGRyaXZlciwgYHBjcy14cGNzLXJrLmNgLCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhlc2UgYXJlIGEgcGFpbiBpbiB0aGUgbmVjayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSBiZWNhdXNlIHRoZXkgdXN1YWxseSByZWx5IGhlYXZpbHkgb24gdGhlIERldmljZSBUcmVlLiBVbmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgc3l6a2FsbGVyLXNwZWNpZmljIHBzZXVkby1kZXZpY2UsIG9yIHRoZSBkZXZpY2UgdHJlZSBpcyBhbHJlYWR5IGF2YWlsYWJsZSwgd2hpY2ggaXMgdW5saWtlbHkgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LCBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCB0aGlzIGRyaXZlci4gU3l6a2FsbGVyICpjb3VsZCogdHJ5IHRvIGluamVjdCB0aGUgcGxhdGZvcm0gZGV2aWNlIHdpdGggYHN5el9kZXZfaW5pdGAgb3IgbW9kaWZ5IHRoZSBEVCBpZiBzdXBwb3J0ZWQsIGJ1dCB0eXBpY2FsbHksIHN5emthbGxlciBwcmVmZXJzIHNpbXBsZXIsIG1vcmUgZGlyZWN0IGFwcHJvYWNoZXMgZm9yIG5ldHdvcmsgZHJpdmVycyBsaWtlIHZpcnR1YWwgaW50ZXJmYWNlcy4gSW4gdGhpcyBjYXNlLCBgcGNzLXhwY3MtcmsuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggYSBjb21wYXRpYmxlIHN0cmluZywgYW5kIGl0cyBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbiB0aGF0IGluY2x1ZGVzIGdldHRpbmcgYSBcInNlcmRlc1wiIHBoeSBhbmQgcmVzb3VyY2VzLiBXaXRob3V0IHRoZSByaWdodCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IGZhaWwuIFRoZSBkZXZpY2UgdHJlZSB3aWxsIG5lZWQgdG8gZXhpc3QgYW5kIGhhdmUgdGhlIGNvcnJlY3QgZW50cmllcyBmb3IgdGhlIHBsYXRmb3JtIGRyaXZlciB0byBzdWNjZWVkLCB3aGljaCBpcyB1bmxpa2VseSBpbiBtb3N0IHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9ucy5cblxuU2Vjb25kbHksIGFuZCBtb3JlIGludGVyZXN0aW5nbHksIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFRoaXMgaXMgYSBnZW5lcmljIGRyaXZlciwgc28gaXQgY291bGQgaGF2ZSBnb29kIHBvdGVudGlhbCBmb3IgZnV6emluZy4gVGhlcmUgaXMgYSByZWZhY3RvcmluZyBoYXBwZW5pbmcgd2hlcmUgYHN0bW1hY19wY3Nfc2V0dXBgIGlzIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhpcyBhZmZlY3RzIGhvdyBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGBzdG1tYWNgIGRyaXZlci4gVGhlIHBhdGNoIGRlbGVnYXRlcyB0aGUgaW5pdGlhbGl6YXRpb24gdG8gYHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdGAuXG5cblRoZSBgc3RtbWFjYCBjaGFuZ2VzIGxlYWQgdG8gdGhlIGBkd21hYy1pbnRlbC5jYCBmaWxlIGdldHRpbmcgbW9kaWZpZWQuIFRoaXMgZmlsZSBpcyBmb3IgSW50ZWwgUENJIGRldmljZXMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBiZWNhdXNlIHN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMhIElmIHRoZSBJbnRlbCBkcml2ZXIgaXMgZW5hYmxlZCwgYW5kIHN5emthbGxlciBjYW4gaW5qZWN0IGEgc3VpdGFibGUgSW50ZWwgUENJIGRldmljZSwgd2UncmUgaW4gYnVzaW5lc3MuIFdlJ2xsIGJlIGFibGUgdG8gcHJvYmUgYGludGVsX21nYmVfcGNzX2luaXRgIGFuZCBmcm9tIHRoZXJlIHRoZSBgc3RtbWFjX3Bjc19zZXR1cGAgZnVuY3Rpb25zLiBUaGlzIHdvdWxkIG1lYW4gcmVhY2hpbmcgYHhwY3NfY3JlYXRlX21kaW9kZXZgLiBUaGUgUENJIGRldmljZSBlbXVsYXRpb24vaW5qZWN0aW9uIGlzIGltcG9ydGFudCBoZXJlLlxuXG5UaGVyZSdzIHNvbWUgZnVuY3Rpb25hbCBsb2dpYyBhcyB3ZWxsLiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgcGNzLXhwY3MuY2AsIHNwZWNpZmljYWxseSBmdW5jdGlvbnMgbGlrZSBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYW5kIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgLiBUaGVzZSBhcmUgZ2VuZXJpYyBQQ1MgZHJpdmVyIGZ1bmN0aW9ucyBhbmQsIHNpbmNlIEludGVsIG1HQkUgdXNlcyBTR01JSSBvciAxMDAwQkFTRVgsIHRoZXNlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdGhyb3VnaCB0aGUgSW50ZWwgbUdCRSBkcml2ZXIsIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGNvcnJlY3RseSBhbmQgU0dNSUkgb3IgMTAwMEJBU0VYIG1vZGVzIGFyZSBhY3RpdmUuIFRoZXNlIG1vZGlmaWNhdGlvbnMgaW4gYHBjcy14cGNzLmNgIHNob3VsZCBiZSB0aGUgbWFpbiBhcmVhIG9mIGZvY3VzLiBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IGJ5IHBoeWxpbmssIHNvIHRoZXkgd2lsbCBiZSBleGVyY2lzZWQgZHVyaW5nIGRldmljZSBvcGVyYXRpb24uXG5cblNvLCB0aGUga2V5IGhlcmUgaXMgUENJIGZ1enppbmcsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIEludGVsIG1HQkUgZHJpdmVyIChgZHdtYWMtaW50ZWwuY2ApLiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBvciBlbXVsYXRlIGFuIEludGVsIFBDSSBkZXZpY2UsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIHJpZ2h0LCB3ZSBjYW4gZXhlcmNpc2UgdGhvc2UgZ2VuZXJpYyBgcGNzLXhwY3MuY2AgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byBiZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBzZXQsIGJ1dCBpdCBsb29rcyBsaWtlIHdlIHdpbGwgbmVlZDpcblxuKiAgIGBDT05GSUdfU1RNTUFDX0VUSGBcbiogICBgQ09ORklHX0RXTUFDX0lOVEVMYFxuKiAgIGBDT05GSUdfUENTX1hQQ1NgXG4qICAgYENPTkZJR19QQ0lgXG5cbkl0IGxvb2tzIGxpa2UgdGhlIGBEV01BQ19JTlRFTGAgY29uZmlnIHNlbGVjdHMgYFBDU19YUENTYC4gTGV0J3MgZ2V0IHRvIHdvcmsgd2l0aCB0ZXN0aW5nIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwOTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MDcuNDk3NzU0NDc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MzgyNTU2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9NzIxPXN0YXRpYyB2b2lkIHhwY3NfcHJlX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTc0OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzo3NTA6c3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy03NTEtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9OTE2PXN0YXRpYyBpbnQgeHBjc19kb19jb25maWcoc3RydWN0IGR3X3hwY3MgKnhwY3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDctXFx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6OTQ4OlxcdFxcdHJldCA9IHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpKHhwY3MsIG5lZ19tb2RlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy05NDktXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MTEuMjM2MDE1OTI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjUyNjg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBicmVhZGNydW1iIHRyYWlsIHN0YXJ0cyB3aXRoIGB4cGNzX2RvX2NvbmZpZ2AuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKndpdGhpbiogdGhhdCBjYWxsLlxuXG5NeSBuZXh0IHN0b3AgaXMgY2xlYXJseSBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYC4gVGhpcyBsb29rcyBsaWtlIHdoZXJlIHdlJ3JlIGRpZ2dpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3RhdGUgcmVsYXRlZCB0byBTR01JSSDigJMgYSBwYXJ0aWN1bGFyIHR5cGUgb2Ygc2lnbmFsaW5nIGludGVyZmFjZSwgbW9zdCBsaWtlbHksIGJhc2VkIG9uIHRoZSBuYW1pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSdyZSBwdWxsaW5nIHRoYXQgc3RhdGUsIGZyb20gd2hlcmUsIGFuZCBob3cgaXQgaW5mb3JtcyB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gSXMgaXQgcHVsbGluZyBmcm9tIHJlZ2lzdGVycywgbWVtb3J5LCBhIGNvbmZpZyBmaWxlPyBJcyBpdCBjaGVja2luZyBmb3IgZXJyb3JzPyBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWVzIGFuZCBhbnkgc3RhdGUgdmFyaWFibGVzIHVzZWQgYXMgYSByZXN1bHQgb2YgdGhhdCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlLiBMZXQncyBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6MTQuNjY4NTQ2NTAzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDM0MjE0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTk4Nj1zdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2M3MyhzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEwNTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTA1OTpzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMDYwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTEyMDQ9c3RhdGljIHZvaWQgeHBjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjUtXFx0Y2FzZSBEV19BTl9DMzdfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTIyNjpcXHRcXHRyZXQgPSB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoeHBjcywgc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMjctXFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMjI4LVxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnhwY3MtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIiVzIHJldHVybmVkICVwZVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMjI5OlxcdFxcdFxcdFxcdFxcXCJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlcXFwiLCBFUlJfUFRSKHJldCkpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTEyMzAtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjE3LjUxMTk3NTkzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzczOTgzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBDUyBTdGF0ZSBSZXRyaWV2YWwqKlxuXG5SaWdodCwgc28gdGhpcyBpcyBjb21pbmcgZnJvbSBhIGNhbGwgdG8gYHhwY3NfZ2V0X3N0YXRlYC4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc3RhdGUgY2hlY2suICpUaGF0KiBzcGVjaWZpYyBmdW5jdGlvbiBjYWxsIGlzIHRoZSByb290IG9mIHRoZSBpc3N1ZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzLCB3aGVyZSBkb2VzIHRoaXMgZ2V0IGNhbGxlZCBmcm9tIGFuZCB3aGF0IGlzIGhhcHBlbmluZyBhcm91bmQgaXQ/IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGF0IGlzIGluaXRpYWxpemluZyB0aGUgUENTIHRvIGJlZ2luIHdpdGguXG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBgaW50ZWxfbWdiZV9wY3NfaW5pdGAgZnVuY3Rpb24uIElzIGl0IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIFBDUyBzdGF0ZSBvciwgaXMgaXQgY2FsbGVkIGJlZm9yZSBgeHBjc19nZXRfc3RhdGVgPyBJcyB0aGVyZSBzb21lIGZvcm0gb2YgcmFjZSBjb25kaXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuICp0aGVzZSogdHdvIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU2NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjIwLjI4OTM3NjgwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYzNTg1NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX21nYmVfcGNzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01NjU9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU3NTpzdGF0aWMgaW50IGludGVsX21nYmVfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NjE5PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzM4LVxcdFxcdHBsYXQtXFx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjczOTpcXHRcXHRwbGF0LVxcdTAwM2VwY3NfaW5pdCA9IGludGVsX21nYmVfcGNzX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NDAtXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MzoyMi42NTI5NzE1ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ0Nzg4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBQQ1MgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBgcGxhdC1cdTAwM2VwY3NfaW5pdGAsIGFuZCBJIGNhbiBzZWUgaXQncyBjYWxsZWQgZnJvbSBgc3RtbWFjX3Bjc19zZXR1cGAuIFRoYXQgY29uZmlybXMgdGhlIGFzc2lnbm1lbnQgYW5kIHRoZSBjYWxsIHN0YWNrOyBzbyBmYXIsIHNvIGdvb2QuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBjYWxsLCBzZWUgKmhvdyogaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCBpbi4gR290dGEgZmlndXJlIG91dCB3aGF0IGtpbmQgb2Ygc2V0dXAgaXQncyBwZXJmb3JtaW5nLCB3aGF0IHBhcmFtZXRlcnMgbWF0dGVyLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjdXN0b21pemF0aW9uIHBvaW50cyBtaWdodCBiZS4gS25vd2luZyAqaG93KiBpdCdzIGFsbCBwdXQgdG9nZXRoZXIgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBpbXBsaWNhdGlvbnMgb2YgdGhlIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzEyNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjI1Ljc5Nzc2NDMxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMDcwNjgzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNzX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwMT12b2lkIHN0bW1hY19tZGlvX3VubG9jayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwMjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDAzLXZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3OTc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA0NjpcXHRyZXQgPSBzdG1tYWNfcGNzX3NldHVwKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA0Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz0zODE9aW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjQyNjppbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjI4LjIxODQ3NzE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njg3NjU0NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0cyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgSW50ZWwgbUdCRSBEZXZpY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFsbCB0cmlnZ2VyZWQgZnJvbSBgX19zdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHJlbGV2YW50IGNvZGUgY2hhbmdlcyBpbiBgcGNzLXhwY3MuY2AsIGBzdG1tYWNfbWRpby5jYCwgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZyBvZiB0aGUgSW50ZWwgbUdCRSBkZXZpY2UuIFRoZSBSb2NrY2hpcC1zcGVjaWZpYyBjaGFuZ2VzIGluIGBwY3MteHBjcy1yay5jYCBhbmQgYGR3bWFjLXJrLmNgIGFyZSBsZXNzIG9mIGEgcHJpb3JpdHkgZm9yIGEgZ2VuZXJpYyBmdXp6aW5nIGVudmlyb25tZW50LCBidXQgaXQgZG9lc24ndCBodXJ0IHRvIGtlZXAgYW4gZXllIG9uIHRoZW0uXG5cbkxldCdzIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQ6IGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhgLCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCwgYGludGVsX21nYmVfcGNzX2luaXRgLCBhbmQgYHN0bW1hY19wY3Nfc2V0dXBgLiBSaWdodCwgYHN0bW1hY19wY3Nfc2V0dXBgIGFuZCBgaW50ZWxfbWdiZV9wY3NfaW5pdGAgYXJlIGJvdGggY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUuIEJ1dCBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgIGFuZCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBhcmUgdHJpZ2dlcmVkIGJ5IHBoeWxpbmssIHdoaWNoIGlzIHRoZW4gdHJpZ2dlcmVkIGJ5IG5ldGxpbmssIGxpa2UgYW4gYGlwIGxpbmsgc2V0IHVwYCBjb21tYW5kLiBUaG9zZSBwaHlsaW5rIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMsIGVzcGVjaWFsbHkgc2luY2UgdGhleSdyZSB1c2VyLXNwYWNlIGNvbnRyb2xsYWJsZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSBuZWVkOiBgRFdNQUNfSU5URUxgLCBgU1RNTUFDX0VUSGAsIGBQQ1NfWFBDU2AsIGFuZCBgUENJYC4gSGFuZyBvbi4uLiBgUENTX1hQQ1NgIGlzIGEgdHJpc3RhdGUsIGFuZCBpdCdzIHNlbGVjdGVkIGJ5IGBEV01BQ19JTlRFTGAuIE9rYXksIHJlYWRpbmcgdGhlIHBhdGNoLi4uIGBQQ1NfWFBDU19QTEFURk9STWAgaXMgdGhlIGdlbmVyaWMgZHJpdmVyLiBBaCwgZ290IGl0LiBgcGNzLXhwY3MuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BDU19YUENTYCBpcyBlbmFibGVkLiBPa2F5LCBsb29raW5nIGF0IHRoZSBtYWtlZmlsZSwgc28gYHBjcy14cGNzLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19QQ1NfWFBDU2AgaXMgZW5hYmxlZC4gYENPTkZJR19EV01BQ19JTlRFTGAgc2VsZWN0cyBgUENTX1hQQ1NgLiBTbywgaXQgbG9va3MgbGlrZSBgRFdNQUNfSU5URUxgIGFuZCBgU1RNTUFDX0VUSGAgYXJlIHRoZSBjb3JlIHJlcXVpcmVtZW50cy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgRFdNQUNfUk9DS0NISVBgIHNlbGVjdHMgYFBDU19YUENTX1JPQ0tDSElQYC4gV2UgbWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCB0b28sIGp1c3QgaW4gY2FzZSwgYnV0IHRoZXkncmUgZGVwZW5kZW50IG9uIGBBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVGAuIFNpbmNlIHdlIHdhbnQgdG8gZm9jdXMgb24gdGhlIGdlbmVyaWMgcGFydHMsIGBEV01BQ19JTlRFTGAgaXMgdGhlIG1vc3QgaW1wb3J0YW50LlxuXG5BbHJpZ2h0LCBmaW5hbCB2ZXJpZmljYXRpb246IFdlIG5lZWQgYFNUTU1BQ19FVEhgLCBgRFdNQUNfSU5URUxgLCBhbmQgYFBDU19YUENTYC4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IGBEV01BQ19JTlRFTGAgaXMgc3VmZmljaWVudCwgYnV0IGxldCdzIHRlc3QgaXQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MzozNy45MDYxMzQ4MzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzA4MTExNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0lOVEVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIzPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzQ9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc5OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzgwLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQzOjQwLjIzNjk1NDc3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc0MTA3MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipRdWljayBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgcmlnaHQsIHNvIGBEV01BQ19JTlRFTGAuLi50aGF0J3MgdGhlIGtleSwgdGhhdCdzIHdoYXQncyBkcml2aW5nIHRoZSBjb25uZWN0aW9uIG92ZXIgdG8gYGR3bWFjLWludGVsLmNgLiBNYWtlcyBzZW5zZSwgYWxpZ25zIHdpdGggdGhlIHVzdWFsIEludGVsLXNwZWNpZmljIGRlc2NyaXB0b3IuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUsIG5lZWQgdG8gYWxzbyBjb25maXJtIHRoZSBzdGF0ZSBvZiBgUENTX1hQQ1NgLiBHb3QgdG8gY3Jvc3MtcmVmZXJlbmNlIG15IHVuZGVyc3RhbmRpbmcgb24gdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTU4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NDMuMDExMDYzOTAzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA1NzE1NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ1NfWFBDU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZz02PW1lbnUgXFxcIlBDUyBkZXZpY2UgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjg6Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MTU9aWYgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxNzpjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI2LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI3OmNvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NDUuNTE2ODE1MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1NTUwNTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgQ29uZmlndXJhdGlvbiBTcGFjZSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgY29uZmlndXJhdGlvbiBhbmQgdGhlIGxhYmVsIGBQQ1NfWFBDU2AganVzdCBjbGlja2VkLiBJIGtub3cgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBzeXN0ZW0gc2V0dXAsIHNvIGxldCdzIHN0YXJ0IHdpdGggdGhhdCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgdXNlZCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYERXTUFDX1JPQ0tDSElQYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgc29mdHdhcmUsIGFuZCBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIGRldmljZSBvcGVyYXRlcy4gRnJvbSB0aGVyZSwgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NDgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0Mzo0OC4yNzIzMjQzMDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTU2MDE1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX1JPQ0tDSElQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTU1PWNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE2ODpjb25maWcgRFdNQUNfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgZHdtYWMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDM6NTAuNjY3OTQyOTgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMjA0MTY1MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYWRkaW5nIFJvY2tjaGlwIFJLMzU2OCBYUENTIHN1cHBvcnQsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UgY2FuIGluY2x1ZGUgYERXTUFDX1JPQ0tDSElQYCBhbmQgYFBDU19YUENTX1JPQ0tDSElQYCBpbiB0aGUgY29uZmlncywgYnV0IHRoZXkgbWlnaHQgbm90IGJlIHJlYWNoYWJsZS4gSW5jbHVkaW5nIHRoZW0gd29uJ3QgaHVydCwgc28gd2h5IG5vdC5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LiBXaGlsZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGl0c2VsZiwgYW5kIHRoZSBkaXJlY3QgYHJrX3Bjc19pbml0YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIHNlZW0gaGFyZCB0byB0cmlnZ2VyIHdpdGhvdXQgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgdGhlIGBzdG1tYWNgIGRyaXZlciBmb3IgUENTIGluaXRpYWxpemF0aW9uLCBhbmQgaW1wb3J0YW50bHksIHRoZSBJbnRlbCBtR0JFIFBDSSBkcml2ZXIgKGBkd21hYy1pbnRlbC5jYCkgdXNlcyB0aGUgbmV3IGluaXRpYWxpemF0aW9uIGZsb3cgbm93LiBUaGlzIGlzIGtleS4gVGhlIGdlbmVyaWMgYHBjcy14cGNzYCBkcml2ZXIncyBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGZvciBTR01JSSBhbmQgMTAwMEJBU0UtWCBpbnRlcmZhY2VzIGFyZSBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIG1lYW5zIHdlIGhhdmUgYSBjb3VwbGUgb2YgbW9yZSBnZW5lcmljIGNvZGUgcGF0aHMgdGhhdCBjb3VsZCBiZSBoaXQuXG5cblRoZXJlZm9yZSwgdGhlIGNoYW5nZXMgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGFuZCBjaGFuZ2VzIHRvIHRoZSBJbnRlbCBQQ0kgZHJpdmVyLCBhcmUgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBhbmQgbmV0bGluayBpbnRlcmZhY2UgbWFuaXB1bGF0aW9uLiBTbywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGZvciBmdXp6aW5nIGFyZSBnb2luZyB0byBiZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgdW5kZXJ3ZW50IGNvZGUgY2hhbmdlcy4gSSdsbCBpbmNsdWRlOiBgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWlgLCBgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4YCwgYHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paWAsIGBpbnRlbF9tZ2JlX3Bjc19pbml0YCwgYW5kIGBzdG1tYWNfcGNzX3NldHVwYC4gSSBhbHNvIGFkZGVkIGBya19wY3NfaW5pdGAsIGB4cGNzX3JrX3Byb2JlYCBhbmQgYHhwY3NfcmtfY3JlYXRlYCB0byB0aGUgbGlzdC4gVGhleSBtYXkgYmUgcmVhY2hhYmxlIGFzIHdlbGwuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYHN0bW1hY19wY3Nfc2V0dXBgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRoYXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgc3RhdGljIGFuZCB0aGVyZWZvcmUgc3VpdGFibGUgYXMgZm9jdXMgc3ltYm9scy4gVGhleSBsb29rIGZpbmUuIEkgdGhlbiBkaWQgYSBkaWZmIGNoZWNrIG9uIGBwY3MteHBjcy5jYCB0byBjb25maXJtIHRoZSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSB0aGUgb25lcyBhY3R1YWxseSBjaGFuZ2VkIGJ5IHRoaXMgcGF0Y2guXG5cbk15IGluaXRpYWwgY29uZmlnIHNldHVwIHNlZW1zIHNvdW5kLiBJJ2xsIHVzZSBgU1RNTUFDX0VUSGAsIGBEV01BQ19JTlRFTGAsIGBQQ1NfWFBDU2AsIGBQQ1NfWFBDU19ST0NLQ0hJUGAsIGFuZCBgRFdNQUNfUk9DS0NISVBgIHRvIHRlc3QuIE9oLCBhbmQgSSBqdXN0IG5vdGljZWQgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLCBzbyBJJ2xsIGluY2x1ZGUgYFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQlBIWWAgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNjcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQ0OjAyLjg3MjExMTMwM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NDg2MjAwMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWV9ST0NLQ0hJUF9OQU5FTkdfQ09NQlBIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDQ6MDUuNTY2OTg0NjY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzI2NjMyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY2AuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFzc3VtaW5nIHRoaXMgaXMgcmVsYXRlZCB0byBhIFJvY2tjaGlwIHN5c3RlbS1vbi1hLWNoaXAgKFNvQyksIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBhIGNvbWJpbmVkIFBIWSAocGh5c2ljYWwgbGF5ZXIpIGxpa2UgYSBVU0Igb3IgUENJZSBQSFkuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIGFuZCBwcm9iYWJseSBzb21lIGRldmljZSB0cmVlIGJpbmRpbmdzLCBhbmQgdGhlbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBkcml2ZXIuXG5cbkZpcnN0LCBJJ2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUgY29kZSBiYXNlLiBBIHF1aWNrIHNlYXJjaCBmb3IgdGhhdCBmaWxlbmFtZSBzaG91bGQgcG9pbnQgbWUgdG8gdGhlIGNvcnJlY3QgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSdsbCB0aGVuIGV4YW1pbmUgdGhlIGZpbGUgY29udGVudHMuIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgY29tYmluYXRpb24gb2YgZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgYW5kIGludGVycnVwdCBoYW5kbGVycywgcG9zc2libHkgdXNpbmcgYSBjb21tb24gUEhZIGZyYW1ld29yay4gVGhlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIHByZXNlbnQgZWl0aGVyIGRpcmVjdGx5IHdpdGhpbiB0aGF0IGRyaXZlciBmaWxlIG9yLCBtb3JlIGxpa2VseSwgbWFuYWdlZCB0aHJvdWdoIGRldmljZSB0cmVlIGJpbmRpbmdzLlxuXG5JZiBpdCdzIGRldmljZSB0cmVlIGJhc2VkLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgRFQgKERldmljZSBUcmVlKSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uLCB1c3VhbGx5IGZvdW5kIGluIGEgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9gIGRpcmVjdG9yeS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgZGV0YWlscyBvbiB0aGUgcHJvcGVydGllcyB0aGF0IHRoZSBEVCBub2RlIGZvciB0aGlzIFBIWSBleHBlY3RzLCBhbmQgaG93IHRoZXNlIHNldHRpbmdzIGFyZSBhcHBsaWVkLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzIChjbG9jayBmcmVxdWVuY2llcywgY2xvY2sgZG9tYWlucyksIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3MgKHZvbHRhZ2UgcmFpbHMsIHBvd2VyIGRvbWFpbnMpLCBhbnkgcmVxdWlyZWQgaW50ZXJydXB0IGxpbmVzLCBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgYWRkcmVzc2VzIG9yIG9mZnNldHMgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhpcyBzcGVjaWZpYyBkcml2ZXIgdG8gaW5pdGlhbGl6ZSB0aGlzIHNwZWNpZmljIFBIWS4gVGhlIHNwZWNpZmljcyB3aWxsIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIG5hbmVuZy1jb21icGh5LiBJJ2xsIGFsc28gYmUgZXhhbWluaW5nIGhvdyB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCB0byB0aGUgb3RoZXIgY29tcG9uZW50cy5cblxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGVudGlyZSBkZXZpY2UgY29uZmlndXJhdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFBIWSBpcyBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCB3aXRoaW4gdGhlIGJyb2FkZXIgUm9ja2NoaXAgU29DIGNvbnRleHQsIHNvIHRoYXQgaWYgdGhlcmUgd2VyZSBhIG1hbGZ1bmN0aW9uLCBJIHdvdWxkIGtub3cgaG93IHRvIHRyb3VibGVzaG9vdCB0aGlzIGRldmljZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMDAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0NDowOS44Mzk2NDk2MDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTQzMTg3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5Lm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfUEhZX1JPQ0tDSElQX0lOTk9fVVNCMilcXHQrPSBwaHktcm9ja2NoaXAtaW5uby11c2IyLm9cXG5kcml2ZXJzL3BoeS9yb2NrY2hpcC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWSlcXHQrPSBwaHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkub1xcbmRyaXZlcnMvcGh5L3JvY2tjaGlwL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfUENJRSlcXHRcXHQrPSBwaHktcm9ja2NoaXAtcGNpZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQ0OjEyLjQ1Mzk3OTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0NzcyMDY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSzM1NjggWFBDUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEkgc2VlIGl0J3MgYWRkaW5nIGBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWWAgdG8gdGhlIGNvbmZpZ3MsIHNvIHRoYXQncyB0aGUgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYSBSb2NrY2hpcCBSSzM1NjggWFBDUyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBhZmZlY3RzIHRoZSBgcGNzLXhwY3NgLCBgc3RtbWFjYCwgYW5kIGBkd21hYy1pbnRlbGAgZHJpdmVycy5cblxuVGhlIHRyaWNreSBwYXJ0IGlzIHRoYXQgdGhlIHBsYXRmb3JtIGRyaXZlciBpdHNlbGYsIHRoZSBSb2NrY2hpcCBzcGVjaWZpYyBiaXQsIG1pZ2h0IGJlIGhhcmQgdG8gaGl0IGluIG15IHVzdWFsIHZpcnR1YWxpemVkIHNldHVwIHdpdGhvdXQgdmVyeSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLiBIb3dldmVyLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHNvbWUgKmdlbmVyaWMqIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIHJlZmFjdG9yaW5nIGluIHRoZSBgc3RtbWFjYCBpbml0aWFsaXphdGlvbiBmbG93IGlzIGludGVyZXN0aW5nLCBhbmQgdGhlIGNoYW5nZXMgdG8gdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoYGR3bWFjLWludGVsLmNgKSB0byB1c2UgdGhhdCBuZXcgaW5pdGlhbGl6YXRpb24gYXJlIGRlZmluaXRlbHkgaW4gc2NvcGUuIEkgY2FuIGdldCB0byB0aGVzZSwgcmVnYXJkbGVzcyBvZiBzcGVjaWZpYyBoYXJkd2FyZS4gQWRkaXRpb25hbGx5LCB0aGUgcGF0Y2ggYWx0ZXJzIHRoZSBhdXRvLW5lZ290aWF0aW9uIGFuZCBzdGF0ZSBwb2xsaW5nIGxvZ2ljIGluIHRoZSBnZW5lcmljIGBwY3MteHBjcy5jYCBkcml2ZXIgZm9yIFNHTUlJIGFuZCAxMDAwQkFTRS1YIGludGVyZmFjZXMuIFRob3NlIGFyZSBhbHNvIHJlYWNoYWJsZS5cblxuR2l2ZW4gdGhlc2UgZ2VuZXJpYyBjb2RlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZSByZWFjaGFiaWxpdHkgdmlhIFBDSSBmdXp6aW5nIGFuZCBuZXRsaW5rIG1hbmlwdWxhdGlvbiwgSSdkIHNheSB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBnZXQgdGhpcyBhZGRlZCB0byB0aGUgY2FtcGFpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAzLCJPdXRwdXRUb2tlbnMiOjM1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0NDoxOS4zMDE3MDI5OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU5NjQwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCIsXG4gICAgXCJQQ1NfWFBDU1wiLFxuICAgIFwiUENTX1hQQ1NfUk9DS0NISVBcIixcbiAgICBcIkRXTUFDX1JPQ0tDSElQXCIsXG4gICAgXCJQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpXCIsXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhcIixcbiAgICBcInhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paVwiLFxuICAgIFwiaW50ZWxfbWdiZV9wY3NfaW5pdFwiLFxuICAgIFwic3RtbWFjX3Bjc19zZXR1cFwiLFxuICAgIFwicmtfcGNzX2luaXRcIixcbiAgICBcInhwY3NfcmtfcHJvYmVcIixcbiAgICBcInhwY3NfcmtfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJ3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCIsXG4gICAgXCJQQ1NfWFBDU1wiLFxuICAgIFwiUENTX1hQQ1NfUk9DS0NISVBcIixcbiAgICBcIkRXTUFDX1JPQ0tDSElQXCIsXG4gICAgXCJQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpXCIsXG4gICAgXCJ4cGNzX2NvbmZpZ19hbmVnX2MzN18xMDAwYmFzZXhcIixcbiAgICBcInhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paVwiLFxuICAgIFwiaW50ZWxfbWdiZV9wY3NfaW5pdFwiLFxuICAgIFwic3RtbWFjX3Bjc19zZXR1cFwiLFxuICAgIFwicmtfcGNzX2luaXRcIixcbiAgICBcInhwY3NfcmtfcHJvYmVcIixcbiAgICBcInhwY3NfcmtfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciB0aGUgUm9ja2NoaXAgUkszNTY4IFhQQ1MsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IHBsYXRmb3JtIGRyaXZlciBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgZ2VuZXJpYyBwY3MteHBjcyBkcml2ZXIgYW5kIHN0bW1hYyBkcml2ZXIuIFdoaWxlIHRoZSBSb2NrY2hpcC1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgbWlnaHQgYmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLCB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgaG93IHRoZSBQQ1MgaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGdlbmVyaWMgc3RtbWFjIGRyaXZlciBhbmQgbW9kaWZpZXMgdGhlIEludGVsIG1HQkUgUENJIGRyaXZlciAoZHdtYWMtaW50ZWwuYykgdG8gdXNlIHRoZSBuZXcgaW5pdGlhbGl6YXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIGl0IG1vZGlmaWVzIHRoZSBnZW5lcmljIHBjcy14cGNzLmMgZHJpdmVyJ3MgYXV0by1uZWdvdGlhdGlvbiBhbmQgc3RhdGUgcG9sbGluZyBsb2dpYyBmb3IgU0dNSUkgYW5kIDEwMDBCQVNFLVggaW50ZXJmYWNlcy4gVGhlc2UgZ2VuZXJpYyBhbmQgUENJLWJhc2VkIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYW5kIG5ldGxpbmsgaW50ZXJmYWNlIG1hbmlwdWxhdGlvbiwgbWFraW5nIHRoZSBwYXRjaCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workfloww7sp2[1] Phase: Succeeded StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 05:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 05:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2] Phase: Succeeded StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 05:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 05:44:30 +0000 UTC FinishedAt: 2026-07-15 05:44:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workfloww7sp2/series-workfloww7sp2-convert-artifact-646404264/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 05:44:50 +0000 UTC FinishedAt: 2026-07-15 06:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 05:44:50 +0000 UTC FinishedAt: 2026-07-15 06:17:50 +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:*d10f19c7-d630-4ea6-8d53-43fc66cb357f,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-workfloww7sp2/series-workfloww7sp2-convert-artifact-646404264/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": "3a8f09f1-2c75-4064-a9b5-2499e9e78b5f", "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-workfloww7sp2/series-workfloww7sp2-build-action-2473053982/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 05:44:50 +0000 UTC FinishedAt: 2026-07-15 06:17:40 +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:*d10f19c7-d630-4ea6-8d53-43fc66cb357f,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-workfloww7sp2/series-workfloww7sp2-convert-artifact-646404264/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": "3a8f09f1-2c75-4064-a9b5-2499e9e78b5f", "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-workfloww7sp2/series-workfloww7sp2-build-action-2473053982/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 06:17:50 +0000 UTC FinishedAt: 2026-07-15 06:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 06:17:50 +0000 UTC FinishedAt: 2026-07-15 06:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 06:17:50 +0000 UTC FinishedAt: 2026-07-15 06:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 06:17:50 +0000 UTC FinishedAt: 2026-07-15 06:17:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workfloww7sp2/series-workfloww7sp2-convert-artifact-3422182799/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 06:18:00 +0000 UTC FinishedAt: 2026-07-15 06:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 06:18:00 +0000 UTC FinishedAt: 2026-07-15 06:19:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3a8f09f1-2c75-4064-a9b5-2499e9e78b5f,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-workfloww7sp2/series-workfloww7sp2-build-action-2473053982/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-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 06:20:00 +0000 UTC FinishedAt: 2026-07-15 06:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 06:20:00 +0000 UTC FinishedAt: 2026-07-15 06:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 06:20:00 +0000 UTC FinishedAt: 2026-07-15 06:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 06:20:00 +0000 UTC FinishedAt: 2026-07-15 06:55:45 +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:*d10f19c7-d630-4ea6-8d53-43fc66cb357f,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-workfloww7sp2/series-workfloww7sp2-convert-artifact-3422182799/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": "5c6f78e7-8b79-4440-9c45-0c758372cc47", "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-workfloww7sp2/series-workfloww7sp2-build-action-1609776803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 06:20:00 +0000 UTC FinishedAt: 2026-07-15 06:54:55 +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:*d10f19c7-d630-4ea6-8d53-43fc66cb357f,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-workfloww7sp2/series-workfloww7sp2-convert-artifact-3422182799/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": "5c6f78e7-8b79-4440-9c45-0c758372cc47", "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-workfloww7sp2/series-workfloww7sp2-build-action-1609776803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 06:55:45 +0000 UTC FinishedAt: 2026-07-15 06:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 06:55:45 +0000 UTC FinishedAt: 2026-07-15 06:55:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 06:55:45 +0000 UTC FinishedAt: 2026-07-15 06:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 06:55:45 +0000 UTC FinishedAt: 2026-07-15 06:57:39 +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:*5c6f78e7-8b79-4440-9c45-0c758372cc47,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-workfloww7sp2/series-workfloww7sp2-build-action-1609776803/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-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +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":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"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:*3a8f09f1-2c75-4064-a9b5-2499e9e78b5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5c6f78e7-8b79-4440-9c45-0c758372cc47,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-workfloww7sp2/series-workfloww7sp2-build-action-2473053982/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-workfloww7sp2/series-workfloww7sp2-build-action-1609776803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 06:57:59 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 06:57:56 +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":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"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-workfloww7sp2/series-workfloww7sp2-convert-artifact-4222106696/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 06:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 06:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 06:57:49 +0000 UTC FinishedAt: 2026-07-15 06:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 06:57:59 +0000 UTC FinishedAt: 2026-07-15 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7sp2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xpcs_config_aneg_c37_sgmii","xpcs_config_aneg_c37_1000basex","xpcs_get_state_c37_sgmii","intel_mgbe_pcs_init","stmmac_pcs_setup","rk_pcs_init","xpcs_rk_probe","xpcs_rk_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7059bdf4f04a3e14f4fafb3ac35fdca913e3e21a","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL","PCS_XPCS","PCS_XPCS_ROCKCHIP","DWMAC_ROCKCHIP","PHY_ROCKCHIP_NANENG_COMBO_PHY"],"series_id":"ca0a0a0e-66d1-494e-93b2-e0a162d22b20","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 06:57:59 +0000 UTC FinishedAt: 2026-07-15 07:54:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3a8f09f1-2c75-4064-a9b5-2499e9e78b5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5c6f78e7-8b79-4440-9c45-0c758372cc47,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-workfloww7sp2/series-workfloww7sp2-build-action-2473053982/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-workfloww7sp2/series-workfloww7sp2-build-action-1609776803/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-workfloww7sp2/series-workfloww7sp2-convert-artifact-4222106696/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,}