Name: series-workflow75rcr Phase: Succeeded StartedAt: 2026-06-30 14:47:14 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[0] Phase: Succeeded StartedAt: 2026-06-30 14:47:14 +0000 UTC FinishedAt: 2026-06-30 15:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 14:47:14 +0000 UTC FinishedAt: 2026-06-30 15:02:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "DWMAC_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "DWMAC_INTEL" ], "series_id": "fdc340b7-a848-4f2c-bf2c-046f4f491631" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__free_dma_rx_desc_resources", "free_dma_rx_desc_resources", "free_dma_desc_resources", "stmmac_disable_rx_queue", "stmmac_xdp_disable_pool" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NGM2MDI0N2U2NTBiN2I1NTNjYzAzZTY0MzJmNmI5MWZjZjAwNTFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTQ6NTk6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li40YjhmMjgxNGQzYjVmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yMTcyLDggJiM0MzsyMTcyLDEwIEBAIHN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2cnhfcS1cdTAwM2V4ZHBfcnhxKTtcbiBcbiBcdGtmcmVlKHJ4X3EtXHUwMDNlYnVmX3Bvb2wpO1xuLVx0aWYgKHJ4X3EtXHUwMDNlcGFnZV9wb29sKVxuJiM0MztcdGlmIChyeF9xLVx1MDAzZXBhZ2VfcG9vbCkge1xuIFx0XHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVx1MDAzZXBhZ2VfcG9vbCk7XG4mIzQzO1x0XHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvZiBwYWdlX3Bvb2wgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYnkgc2V0dGluZyB0aGUgcG9pbnRlciB0byBOVUxMIGFmdGVyIGRlc3RydWN0aW9uLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTRjNjAyNDdlNjUwYjdiNTUzY2MwM2U2NDMyZjZiOTFmY2YwMDUxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE0OjU5OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZTUuLjRiOGYyODE0ZDNiNWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTIxNzIsOCAmIzQzOzIxNzIsMTAgQEAgc3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCXhkcF9yeHFfaW5mb191bnJlZygmYW1wO3J4X3EtJmd0O3hkcF9yeHEpOwogCiAJa2ZyZWUocnhfcS0mZ3Q7YnVmX3Bvb2wpOwotCWlmIChyeF9xLSZndDtwYWdlX3Bvb2wpCiYjNDM7CWlmIChyeF9xLSZndDtwYWdlX3Bvb2wpIHsKIAkJcGFnZV9wb29sX2Rlc3Ryb3kocnhfcS0mZ3Q7cGFnZV9wb29sKTsKJiM0MzsJCXJ4X3EtJmd0O3BhZ2VfcG9vbCA9IE5VTEw7CiYjNDM7CX0KIH0KIAogc3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFNUTU1BQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYHJ4X3EtJmd0O3BhZ2VfcG9vbCA9IE5VTEw7YCBhZnRlciB0aGUgYHBhZ2VfcG9vbF9kZXN0cm95KHJ4X3EtJmd0O3BhZ2VfcG9vbCk7YCBjYWxsIHdpdGhpbiB0aGUgYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyByZWFjaGFibGUgY29kZT8mIzM0OyBhbmQsIG1vcmUgaW1wb3J0YW50bHksICYjMzQ7SXMgdGhpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nPyYjMzQ7CgpUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWNjZXNzaWJpbGl0eS4gQXJlIHRoZXNlIGRldmljZXMgdXN1YWxseSBlbXVsYXRlZCwgb3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayB3aXRoIGhhcmR3YXJlIGFjY2Vzcz8gT2Z0ZW4sIHRoZXNlIFNUTWljcm8gTUFDcyBzaG93IHVwIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBzb21ldGltZXMgdGhleSYjMzk7cmUgZXhwb3NlZCBhcyBQQ0kgZGV2aWNlcywgb3IsIGhvcGVmdWxseSwgZW11bGF0ZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4KCkhvbGQgb24uLi4gYHN0bW1hY2AgaXMgYWN0dWFsbHkgYSAqcmVhbGx5KiBjb21tb24gZHJpdmVyLCBpc24mIzM5O3QgaXQ/IFRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGVtdWxhdGVkIGluIFFFTVUuIEV4Y2VsbGVudCEgVGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgbXVjaCBlYXNpZXIuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhbnkgY2x1ZXMgYWJvdXQgaXRzIGVtdWxhdGVkIHN1cHBvcnQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgc3RyYXRlZ3kgZm9yIHJlcHJvZHVjaW5nIGFuZCBmdXp6aW5nIHRoaXMgcG90ZW50aWFsIGJ1Zy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0Olx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29Dczpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjg2Olx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIEluZ2VuaWMgU29Dc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyOS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTUyLVx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc2LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4ODpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4Olx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxNC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjUtXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2Olx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjM3LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQ5LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjY1PWNvbmZpZyBEV01BQ19TVE0zMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNzM6XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODU6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTc6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOTpcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTk6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDAtXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cdCAgU29DLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNTU9Y29uZmlnIERXTUFDX1RFR1JBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Mi1cdCAgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg1LVx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2Olx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk1Olx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEzOlx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTY0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBDSSBEZXZpY2UgUG9zc2liaWxpdGllcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IG1pbmQuIEdyZWF0LCBgU1RNTUFDX1BDSWAgaXMgZW5hYmxlZCEgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNhbiBiZSBleHBvc2VkIGFzIGEgUENJIGRldmljZS4gQW5kLCBvZiBjb3Vyc2UsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Igc2luY2UgaXQmIzM5O3MgcmVhY2hhYmxlIHdpdGhpbiBRRU1VLiBUaGVuLCBhIHF1aWNrIHNjYW4gcmV2ZWFscyB0aGF0IGBEV01BQ19JTlRFTGAgaXMgYWxzbyB1dGlsaXppbmcgUENJOiAmIzM0O1RoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMJiMzNDsuIFRoaXMgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGlzIGRyaXZlciAqZGVmaW5pdGVseSogaGFzIGEgUENJIHBhdGh3YXkuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBpZiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgaXMgZXhwb3NlZCBpbiBhIHdheSBJIGNhbiBsZXZlcmFnZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0JiMzOTtzIHJlYWNoYWJsZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjEyOT1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEzOTogKiBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzIC0gZnJlZSBSWCBkbWEgZGVzYyByZXNvdXJjZXMgKHBlciBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNDUtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIxODE9c3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4OC1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgcnhfY291bnQ7IHF1ZXVlJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE4OTpcdFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTY9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDUtXHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDA2Olx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzAwOT12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDI0Olx0XHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyNS1cdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgUlggZGVzYy5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjQKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRE1BIFJYIERlc2NyaXB0b3IgUmVzb3VyY2UgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBzZWUgdGhhdCBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkLiBOb3csIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgaW5zaWdodHMgaW50byB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSByZXNvdXJjZXMgYXJlIGJlaW5nIHJlbGVhc2VkLCB0aGUgcG90ZW50aWFsIGZvciBjb250ZW50aW9uLCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgRE1BIFJYIGRlc2NyaXB0b3IgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSBkZXRlcm1pbmUgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MgaW4gdGhlIGRhdGEgZmxvdy4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTM4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQwLSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE0NDpzdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0NS1cdFx0XHRcdFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE4MTpzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODItXHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTg4LVx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFx1MDAzYyByeF9jb3VudDsgcXVldWUmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5Olx0XHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjMyMD1zdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LWVycl9kbWE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIzMzc6XHRmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDM4PXN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0NDYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ0NzpcdGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIGRtYV9jb25mKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTk2PXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA1LVx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAwNjpcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwMDk9dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAyNDpcdFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMjUtXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IFJYIGRlc2MuXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjc5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZXNvdXJjZSBNYW5hZ2VtZW50IGluIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHNldmVyYWwga2V5IHBsYWNlcyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXI6IHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGNsb3NlZCB2aWEgYHN0bW1hY19yZWxlYXNlYCwgYW5kIGltcG9ydGFudGx5LCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYHN0bW1hY19yZXN1bWVgLCBgc3RtbWFjX3N1c3BlbmRgLCBhbmQgYHN0bW1hY19vcGVuYC4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBhIHZpdGFsIHBhcnQgb2YgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgbGlmZWN5Y2xlLCByZWFjaGFibGUgaW4gbXVsdGlwbGUsIGNydWNpYWwgc2NlbmFyaW9zLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlIHJlbGF0ZWQgdG8gYHJ4X3EtJmd0O3BhZ2VfcG9vbGAuIFRoZSBmaXggaW52b2x2ZXMgbnVsbGluZyBvdXQgYHJ4X3EtJmd0O3BhZ2VfcG9vbGAgYWZ0ZXIgaXQmIzM5O3MgZGVzdHJveWVkLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcHByb2FjaCwgcHJldmVudGluZyBzdWJzZXF1ZW50IGVycm9uZW91cyBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGNsZWFyLCBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCB0byBpbmNyZWFzZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuCgpOb3csIGxldCBtZSBmaW5kIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3QuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGFuZCBjaGVjayB0aG9zZSBgRm9jdXNTeW1ib2xzYCB0byBmaW5kIHRoZSBwcmVjaXNlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGZvciBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGFuZCBmaW5hbGx5IGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAuIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBib3RoIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCwgd2hpY2ggSSBzdXNwZWN0IGFyZSBsaW5rZWQgdG8gdGhlIHByb2Nlc3Mgb2YgZnJlZWluZyBhbmQgYWxsb2NhdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDI0PXN0YXRpYyBpbmxpbmUgYm9vbCBzdG1tYWNfeGRwX2lzX2VuYWJsZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQyOTp2b2lkIHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzMC12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Njk1ND1zdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbnVtX2ZyYW1lcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5OTY6dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMzgtXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2V0eF9uYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzozOTpcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTQwLVx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc1LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y2gtXHUwMDNlcnh0eF9uYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo3NjpcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc3LVx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTkzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIFJlc291cmNlIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgWERQIHNldHVwIGFuZCB0ZWFyZG93biB3aXRoaW4gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGFuZCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgYXJlLCBhcyBJIHN1c3BlY3RlZCwgY2FsbGluZyBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBUaGUgWERQIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGEgdHJpZ2dlciBwb2ludCBmb3IgdGhlc2UgUlggcXVldWUgZGlzYWJsaW5nIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgaGFkIGEgaHVuY2gsIGFuZCBpdCYjMzk7cyBjb25maXJtZWQ6IHRoaXMgaXMgaG93IHRoaW5ncyBhcmUgaGFwcGVuaW5nIGF0IHRoZSBsb3dlciBsZXZlbHMuCgpOb3csIGEga2V5IHBvaW50IG9mIGludGVyZXN0IGlzIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AuIEkgc2VlIHRoYXQmIzM5O3MgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgYHN0bW1hY19yZWxlYXNlYCBwcm9jZXNzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgRE1BIGRlc2NyaXB0b3IgcmVzb3VyY2VzIGFyZSBiZWluZyBmcmVlZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVsZWFzZWQuIFRoYXQmIzM5O3MgZ29vZCBwcmFjdGljZS4gTWFrZXMgbWUgd2FudCB0byBkaWcgaW50byBgc3RtbWFjX3JlbGVhc2VgIGluIGRldGFpbCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGNsZWFuaW5nIHVwIGl0cyByZXNvdXJjZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4Mjg9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yOTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTQ5Olx0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIHAsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTgyOlx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTgzLWluaXRfZXJyb3I6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMzg6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyNjI6XHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjY5OiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI3MC0gKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI3My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI3NDpzdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTQtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE1Olx0Lm5kb19zdG9wID0gc3RtbWFjX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTYtXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1OTg9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwMy1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MDQ6XHRcdHN0bW1hY19yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjIzPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYyOTpcdFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NDQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipBbmFseXppbmcgdGhlIGBfX3N0bW1hY19yZWxlYXNlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHVuZGVyIGEgZmV3IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYG5kb19zdG9wYCAoc28sIHdoZW4gdGhlIGludGVyZmFjZSBnb2VzIGRvd24gdmlhIGlmY29uZmlnKSwgd2hlbiB0aGUgTVRVIGlzIGNoYW5nZWQgKGBzdG1tYWNfY2hhbmdlX210dWApLCBhbmQgZHVyaW5nIHJlLWluaXRpYWxpemF0aW9uIG9mIGVpdGhlciB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBxdWV1ZXMgb3IgcmluZyBwYXJhbWV0ZXJzIChgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgLCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gKS4gVGhlc2UgYXJlIGFsbCBrZXkgb3BlcmF0aW9ucyB3aGVyZSB5b3UmIzM5O2QgZXhwZWN0IHNvbWUgY2xlYW51cCBvciByZXNvdXJjZSByZWxlYXNlIHRvIGhhcHBlbi4KClRoaXMgc3VnZ2VzdHMgYSBmYWlybHkgY3JpdGljYWwgY2hhbmdlLCBsaWtlbHkgYWRkcmVzc2luZyBhIGJ1Zy4gVGhlIHBsYWNlbWVudCBvZiB0aGlzIGZ1bmN0aW9uIHBvaW50cyB0byBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIG9yIGltcHJvcGVyIHN0YXRlIHRyYW5zaXRpb25zLiBJdCBuZWVkcyBhIGNsb3NlciBsb29rIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgc3VjaCBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9mdGVuIGltcGxpZXMgaXQgY2FuIG1ha2Ugb3IgYnJlYWsgdGhpbmdzLiBOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zdG1tYWNfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMzg6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQyNzQ9c3RhdGljIGludCBzdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NjUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBgX19zdG1tYWNfcmVsZWFzZWAqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGBfX3N0bW1hY19yZWxlYXNlYCBpbXBsZW1lbnRhdGlvbi4mIzM0OyBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIG51YW5jZXMuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gYSBzcGVjaWZpYyBTVE1NQUMgZGV2aWNlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2Ygd2hhdCB0aG9zZSBzcGVjaWZpYyByZXNvdXJjZXMgYXJlIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCBhdCB0aGUgcG9pbnQgb2YgcmVsZWFzZS4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBjYXRlZ29yaXplIHRoZSBxdWVzdGlvbnMgSSBuZWVkIGFuc3dlcnMgdG8sIGxpa2U6IElzIHRoZXJlIGFueSByaXNrIG9mIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcz8gV2hhdCBsb2NrcyBhcmUgaW52b2x2ZWQsIGFuZCB3aGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gQXJlIGFsbCBuZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb25zIGJlaW5nIHByb3Blcmx5IGRlYWxsb2NhdGVkLCBpbmNsdWRpbmcgRE1BIGRlc2NyaXB0b3JzLCByaW5nIGJ1ZmZlcnMsIGFuZCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXM/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlLCBzbyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBiZWluZyBkb25lIGNvcnJlY3RseSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQyMzg6XHRzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG40MjM5Olx0e1xuNDI0MDpcdFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbjQyNDE6XHRcdHU4IGNoYW47XG40MjQyOlx0XG40MjQzOlx0XHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbjQyNDQ6XHRcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuNDI0NTpcdFxuNDI0NjpcdFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbjQyNDc6XHRcbjQyNDg6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbjQyNDk6XHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbjQyNTA6XHRcbjQyNTE6XHRcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcbjQyNTI6XHRcbjQyNTM6XHRcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuNDI1NDpcdFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbjQyNTU6XHRcbjQyNTY6XHRcdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbjQyNTc6XHRcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG40MjU4Olx0XG40MjU5Olx0XHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbjQyNjA6XHRcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuNDI2MTpcdFxuNDI2MjpcdFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuNDI2MzpcdFxuNDI2NDpcdFx0aWYgKHN0bW1hY19mcGVfc3VwcG9ydGVkKHByaXYpKVxuNDI2NTpcdFx0XHRldGh0b29sX21tc3Zfc3RvcChcdTAwMjZwcml2LVx1MDAzZWZwZV9jZmcubW1zdik7XG40MjY2Olx0fVxuNDI2NzpcdFxuNDI2ODpcdC8qKlxuNDI2OTpcdCAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbjQyNzA6XHQgKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuNDI3MTpcdCAqICBEZXNjcmlwdGlvbjpcbjQyNzI6XHQgKiAgVGhpcyBpcyB0aGUgc3RvcCBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyLlxuNDI3MzpcdCAqL1xuNDI3NDpcdHN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjQyNzU6XHR7XG40Mjc2Olx0XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuNDI3NzpcdFxuNDI3ODpcdFx0LyogSWYgdGhlIFBIWSBvciBNQUMgaGFzIFdvTCBlbmFibGVkLCB0aGVuIHRoZSBQSFkgd2lsbCBub3QgYmVcbjQyNzk6XHRcdCAqIHN1c3BlbmRlZCB3aGVuIHBoeWxpbmtfc3RvcCgpIGlzIGNhbGxlZCBiZWxvdy4gU2V0IHRoZSBQSFlcbjQyODA6XHRcdCAqIHRvIGl0cyBzbG93ZXN0IHNwZWVkIHRvIHNhdmUgcG93ZXIuXG40MjgxOlx0XHQgKi9cbjQyODI6XHRcdGlmIChkZXZpY2VfbWF5X3dha2V1cChwcml2LVx1MDAzZWRldmljZSkpXG40MjgzOlx0XHRcdHBoeWxpbmtfc3BlZWRfZG93bihwcml2LVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbjQyODQ6XHRcbjQyODU6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbjQyODY6XHRcbjQyODc6XHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTQxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERNQSBEZXNjcmlwdG9yIFJlc291cmNlIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBhZGRyZXNzaW5nIHNvbWV0aGluZyBpbiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgIGNhbGxzLiBUaGUgc3BlY2lmaWMgYnVnIHNlZW1zIHRvIGJlIHRoYXQgYHBhZ2VfcG9vbF9kZXN0cm95YCBpcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGByeF9xLSZndDtwYWdlX3Bvb2xgIHRvIGBOVUxMYCBhZnRlcndhcmQuIFJpZ2h0LCBzbyBpZiB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGFnYWluLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvZiB0aGUgcGFnZSBwb29sIOKAkyBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gV2hlbiBkb2VzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlPyBDb3VsZCBpdCBiZSBkdXJpbmcgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCBmb2xsb3dlZCBieSBgc3RtbWFjX3JlbGVhc2VgPyBPciBwb3RlbnRpYWxseSB3aXRoaW4gYHN0bW1hY19yZWluaXRfcXVldWVzYCBvciBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gPyBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgdG8gY29uZmlybSB0aGUgc2NlbmFyaW9zLiBSZWdhcmRsZXNzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIHByb2JsZW0uCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYCBtZW50aW9uZWQuIExldCBtZSBnbyBiYWNrIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIGBzdG1tYWNfbWFpbi5jYC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19tYWluLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00LVx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTMyOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBTZWVtcyBsaWtlIGBDT05GSUdfU1RNTUFDX0VUSGAgaXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgYmlnIGthaHVuYSBmb3IgZW5hYmxpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS4KCk15IGZpcnN0IHBvcnQgb2YgY2FsbCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBnZW5lcmFsIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZ292ZXJucyBgU1RNTUFDX0VUSGAuIEkgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBnZXQgcHVsbGVkIGluIG9yIGV4Y2x1ZGVkIGJhc2VkIG9uIHRoaXMgbWFpbiBzd2l0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGBTVE1NQUNfRVRIYCBmdWxseSBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgd2hldGhlciBpdCBpcyB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGUgdGFzayBhdCBoYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRW5hYmxpbmcgUENJIFByb2JpbmcgZm9yIE5ldHdvcmsgRHJpdmVycyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIHdvcmtpbmcgb24gbWFraW5nIHN1cmUgdGhlc2UgbmV0d29yayBkcml2ZXJzIGJlaGF2ZSBjb3JyZWN0bHkgd2l0aGluIFFFTVUuIFRoaW5raW5nIGFoZWFkLCBhbmQgY29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSwgd2UgcmVhbGx5IG5lZWQgdG8gZW5hYmxlIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYC4gVGhpcyBpcyBrZXk7IGl0JiMzOTtsbCBndWFyYW50ZWUgdGhhdCB0aGV5JiMzOTtyZSBwcm9iZWFibGUgdmlhIFBDSSBpbiB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDcnVjaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3RpbmcsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRoYXQgdGhlIGBTVE1NQUNgIGlzIG1lYW50IHRvIGJlIHByb2JlZCBieSBQQ0kuIEl0IGFsc28gbWFrZSBzZW5zZSB0aGF0IHRoZSBgRFdNQUNfSU5URUxgIHNob3VsZCBhcyB3ZWxsLgoKTm93LCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIGFuZCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyB3b24mIzM5O3QgYnJlYWsgYW55dGhpbmcuIEJlZm9yZSB3ZSBqdW1wIGluIGFuZCBlbmFibGUgdGhlc2UgY29uZmlncywgYSBxdWljayBkZXBlbmRlbmN5IGNoZWNrIG9uIGJvdGggYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGluYWR2ZXJ0ZW50bHkgcHVsbGluZyBpbiBhIGJ1bmNoIG9mIHVud2FudGVkIG1vZHVsZXMgb3IgY29uZmxpY3Rpbmcgd2l0aCBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY29uZmlndXJhdGlvbi4gUXVpY2sgc2FuaXR5IGNoZWNrIGlzIGVzc2VudGlhbCBiZWZvcmUgY29tbWl0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNTEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFNUTU1BQ19QQ0lgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIgd2hlbiBpdCYjMzk7cyB1c2VkIHdpdGggUENJIGludGVyZmFjZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBoYW5kbGVzIFBDSS1zcGVjaWZpYyBmZWF0dXJlcywgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIGNvbnNpZGVyYXRpb25zIHdoZW4gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEkgYW50aWNpcGF0ZSB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoZSBgUENJYCBidXMgaW5mcmFzdHJ1Y3R1cmUsIHdoYXQgb3RoZXIgZmVhdHVyZXMgbWlnaHQgYmUgY291cGxlZCB3aXRoIGBTVE1NQUNfUENJYCBzdWNoIGFzIERNQSBvciBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMsIGFuZCB3aGF0IGVmZmVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gbWlnaHQgaGF2ZSBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gaW1hZ2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGlmZmVyZW50IFBDSSBpbnRlcnJ1cHQgbW9kZWxzLCBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUENJIGNvbnRleHQsIGFuZCBob3cgaXQgZGV0ZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgYmFzZWQgb24gUENJIGRldmljZSBJRHMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYSBnaXZlbiBoYXJkd2FyZSBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3ODQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYERXTUFDX0lOVEVMYCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYERXTUFDX0lOVEVMYC4gSXQmIzM5O3MgYSBrZXkgaWRlbnRpZmllciwgYW5kIGluc3RhbnRseSBzZXRzIG9mZiBhbGFybSBiZWxscyAob3IgYXQgbGVhc3QsIHNwYXJrcyBhIGZldyBjb25uZWN0aW9ucykuIElzIGl0IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBBIGRyaXZlcj8gSXMgaXQgcGFydCBvZiB0aGUga2VybmVsPyBUaGUgbWVyZSBtZW50aW9uIG9mIGBJTlRFTGAgbmFycm93cyB0aGUgZm9jdXMgY29uc2lkZXJhYmx5LiBNeSBleHBlcmllbmNlIHNjcmVhbXM6ICYjMzQ7SW52ZXN0aWdhdGUgdGhpcyBmdXJ0aGVyLiYjMzQ7IFBlcmhhcHMgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlLCBvciBhIHF1aXJrIGluIGhvdyBJbnRlbCBoYW5kbGVzIHNvbWUgbWVtb3J5IGFjY2VzcywgbWF5YmUgZXZlbiBhbiBvZGRpdHkgd2l0aCBpdHMgbmV0d29yayBpbnRlcmZhY2VzLiBJIGhhdmUgYSBsb3Qgb2YgYXZlbnVlcyB0byBzdGFydCBmcm9tIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM3OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzc4Olx0Y29uZmlnIERXTUFDX0lOVEVMXG4gMzc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzODA6XHRcdGRlZmF1bHQgWDg2XG4gMzgxOlx0XHRkZXBlbmRzIG9uIFg4NiBcdTAwMjZcdTAwMjYgUENJXG4gMzgyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzODM6XHRcdGRlcGVuZHMgb24gQUNQSVxuIDM4NDpcdFx0aGVscFxuIDM4NTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbiAzODY6XHRcdCAgc3RtbWFjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSW50ZWwgUXVhcmsvRUhML1RHTC5cbiAzODc6XHRcbiAzODg6XHRjb25maWcgRFdNQUNfTE9PTkdTT05cbiAzODk6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMzkwOlx0XHRkZWZhdWx0IE1BQ0hfTE9PTkdTT042NFxuIDM5MTpcdFx0ZGVwZW5kcyBvbiAoTUFDSF9MT09OR1NPTjY0IHx8IENPTVBJTEVfVEVTVCkgXHUwMDI2XHUwMDI2IFBDSVxuIDM5MjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gMzkzOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDM5NDpcdFx0aGVscFxuIDM5NTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG4gMzk2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxuIDM5NzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBFdGhlcm5ldCBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbnMg4oCTIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUgYmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgU1RNTUFDX1BDSWAgcmVsaWVzIG9uIGJvdGggYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4gQW5kIGBEV01BQ19JTlRFTGAgaGFzIGV2ZW4gbW9yZSBkZXBlbmRlbmNpZXM7IGl0IG5lZWRzIGBYODZgLCBgUENJYCwgYENPTU1PTl9DTEtgLCAqYW5kKiBgQUNQSWAuIEdvdCBpdC4KCkFscmlnaHQsIHNpbmNlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFjY291bnRlZCBmb3IsIEkgY2FuIGp1c3QgbGlzdCB0aG9zZSB0aHJlZS4KCkxldCBtZSBnbyBvbiBhbmQgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBQQUdFX1BPT0xgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ4OD1jb25maWcgTkVUX0RFVkxJTktcbi0tXG5uZXQvS2NvbmZpZy00OTEtXG5uZXQvS2NvbmZpZzo0OTI6Y29uZmlnIFBBR0VfUE9PTFxubmV0L0tjb25maWctNDkzLVx0Ym9vbFxubmV0L0tjb25maWctNDk0LVxubmV0L0tjb25maWc6NDk1OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbm5ldC9LY29uZmlnLTQ5Ni1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc1MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBQQUdFX1BPT0xgIGFuZCBgU1RNTUFDX0VUSGAgUmVsYXRpb25zaGlwKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBQQUdFX1BPT0xgIGJlaW5nIHNlbGVjdGVkLCBhbmQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBpcyBgU1RNTUFDX0VUSGAgdGhlIGRyaXZlciByZXNwb25zaWJsZSBmb3IgdGhhdCBzZWxlY3Rpb24/IFRoaXMgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSBvciByZWZ1dGUgbXkgc3VzcGljaW9uLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IHRoZSByZWxldmFudCBkZXZpY2UgdHJlZSBiaW5kaW5ncyBvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGBTVE1NQUNfRVRIYCBkcml2ZXIuIEFyZSB0aGVyZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB0cmlnZ2VyIHRoZSB1c2Ugb2YgYSBgUEFHRV9QT09MYCB3aXRoIHRoaXMgc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcj8gSSYjMzk7bGwgYWxzbyB3YW50IHRvIHJldmlldyB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgaXRzZWxmIHRvIHNlZSBob3cgaXQgYWxsb2NhdGVzIGFuZCBtYW5hZ2VzIGl0cyBtZW1vcnkuIElmIGl0JiMzOTtzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIGEgYFBBR0VfUE9PTGAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQgY2hvaWNlLCBhbmQgd2hldGhlciBpdCBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlLiBBbnkgcmVsYXRlZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb2YgaW50ZXJlc3QuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgZHJpdmVyLCBpbiB0aGlzIHN1YnN5c3RlbSwgdGhhdCBpcyByZXF1ZXN0aW5nIGEgcGFnZSBwb29sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE2MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgVGFyZ2V0IGZvciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGNvbmZpcm1pbmcsIHllcywgdGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxldmFudCB0byB0aGlzIGFyZWE6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHNwZWNpZmljIHN5bWJvbHMuCgpNeSBpbml0aWFsIGxpc3Qgb2Ygc3ltYm9scyB0byBmb2N1cyBvbiBpbmNsdWRlZDogYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLCBgc3RtbWFjX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC4KCk5vdywgZGlnZ2luZyBkZWVwZXIsIGl0IHNlZW1zIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgYm90aCBjYWxsIGl0LiBBbmQgdGhlbiBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGNhbGxzIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIGluIHR1cm4sIGFzIGRpc2N1c3NlZCwgY2FsbHMgdGhlIG1haW4gZnVuY3Rpb24sIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRmluYWxseSwgYHN0bW1hY19yZWxlYXNlYCBjYWxscyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLgoKU28sIHRvIGJlIG1vcmUgcHJlY2lzZSwgdGhlIHJlZmluZWQgc2V0IG9mIGZvY3VzIHN5bWJvbHMgaXM6IGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCwgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuIE5vdyBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYCBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdGhlIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NTg6c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtOTgtXHRyZXR1cm4gcG9vbCA/IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2wocHJpdiwgcG9vbCwgcXVldWUpIDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo5OTpcdFx0ICAgICAgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjM3CgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDI1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgYnVnIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgWERQIHBvb2wgc2V0dXAuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgc3RtbWFjX3hkcF9zZXR1cF9wb29sYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgaW52b2tlZCB3aGVuIHRoZSBYRFAgcG9vbCBpcyBpbml0aWFsaXplZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIEFGX1hEUC4KClRoZSBjcnV4IG9mIHRoZSBmaXggbGllcyBpbiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AuIEVzc2VudGlhbGx5LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2hlcmUgdGhlIGByeF9xLSZndDtwYWdlX3Bvb2xgIGlzbiYjMzk7dCBiZWluZyBzZXQgdG8gYE5VTExgIGFmdGVyIHRoZSBwb29sIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGNsYXNzaWMgcmVjaXBlIGZvciBhIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiwgcGFydGljdWxhcmx5IGlmIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYWdhaW4gYWZ0ZXIgdGhlIHBvb2wgaXMgYWxyZWFkeSBnb25lLiBOb3QgaWRlYWwsIGFuZCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSB3YW50IHRvIGdldCByaWdodC4KCkdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJLCB0aGUgaW1wYWN0IGNvdWxkIGJlIHNpZ25pZmljYW50LiBBIHZ1bG5lcmFiaWxpdHkgbGlrZSB0aGlzIHdvdWxkIGJlIHZlcnkgaW50ZXJlc3RpbmcgdG8gZnV6ei4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBhbmQgZW5hYmxlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIG15IHRlc3Rpbmc6ICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LCAmIzM0O1NUTU1BQ19QQ0kmIzM0OywgYW5kICYjMzQ7RFdNQUNfSU5URUwmIzM0Oy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBrZXkgc3ltYm9scyByZWxhdGVkIHRvIERNQSByZXNvdXJjZSBmcmVlaW5nOiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzaG90IGF0IGV4cG9zaW5nIHRoZSB1bmRlcmx5aW5nIHZ1bG5lcmFiaWxpdHksIG9yIGNvbmZpcm1pbmcgdGhlIGZpeC4gTXkgcmVhc29uaW5nIGZvciB0aGlzIGlzIGNsZWFyOiB3ZSBoYXZlIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIGEgcGFnZSBwb29sIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNC41MzY0OTEyMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjkwOTYzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwiZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcInN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlXCIsXG4gICAgXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIHBhZ2VfcG9vbCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBzZXR0aW5nIHRoZSBwb2ludGVyIHRvIE5VTEwgYWZ0ZXIgZGVzdHJ1Y3Rpb24uIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNC41MzY0OTkwNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Mzg1NjQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0YzYwMjQ3ZTY1MGI3YjU1M2NjMDNlNjQzMmY2YjkxZmNmMDA1MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTQ6NTk6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCAzNTkxNzU1ZWEzMGJlNS4uNGI4ZjI4MTRkM2I1ZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjE3Miw4ICsyMTcyLDEwIEBAIHN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNnJ4X3EtXFx1MDAzZXhkcF9yeHEpO1xcbiBcXG4gXFx0a2ZyZWUocnhfcS1cXHUwMDNlYnVmX3Bvb2wpO1xcbi1cXHRpZiAocnhfcS1cXHUwMDNlcGFnZV9wb29sKVxcbitcXHRpZiAocnhfcS1cXHUwMDNlcGFnZV9wb29sKSB7XFxuIFxcdFxcdHBhZ2VfcG9vbF9kZXN0cm95KHJ4X3EtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuK1xcdFxcdHJ4X3EtXFx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNS4wMjEyNjkwMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzU0NDMwMjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwic3RtbWFjX2Rpc2FibGVfcnhfcXVldWVcIixcbiAgICBcInN0bW1hY194ZHBfZGlzYWJsZV9wb29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTRjNjAyNDdlNjUwYjdiNTUzY2MwM2U2NDMyZjZiOTFmY2YwMDUxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE0OjU5OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li40YjhmMjgxNGQzYjVmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yMTcyLDggKzIxNzIsMTAgQEAgc3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdHhkcF9yeHFfaW5mb191bnJlZyhcdTAwMjZyeF9xLVx1MDAzZXhkcF9yeHEpO1xuIFxuIFx0a2ZyZWUocnhfcS1cdTAwM2VidWZfcG9vbCk7XG4tXHRpZiAocnhfcS1cdTAwM2VwYWdlX3Bvb2wpXG4rXHRpZiAocnhfcS1cdTAwM2VwYWdlX3Bvb2wpIHtcbiBcdFx0cGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO1xuK1x0XHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjI1LjAyMTI3MzI4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTk3Nzg4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU1RNTUFDIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYHJ4X3EtXHUwMDNlcGFnZV9wb29sID0gTlVMTDtgIGFmdGVyIHRoZSBgcGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO2AgY2FsbCB3aXRoaW4gdGhlIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgcmVhY2hhYmxlIGNvZGU/XCIgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBcIklzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz9cIlxuXG5UaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWNjZXNzaWJpbGl0eS4gQXJlIHRoZXNlIGRldmljZXMgdXN1YWxseSBlbXVsYXRlZCwgb3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayB3aXRoIGhhcmR3YXJlIGFjY2Vzcz8gT2Z0ZW4sIHRoZXNlIFNUTWljcm8gTUFDcyBzaG93IHVwIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBzb21ldGltZXMgdGhleSdyZSBleHBvc2VkIGFzIFBDSSBkZXZpY2VzLCBvciwgaG9wZWZ1bGx5LCBlbXVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5Ib2xkIG9uLi4uIGBzdG1tYWNgIGlzIGFjdHVhbGx5IGEgKnJlYWxseSogY29tbW9uIGRyaXZlciwgaXNuJ3QgaXQ/IFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgdG8gYmUgZW11bGF0ZWQgaW4gUUVNVS4gRXhjZWxsZW50ISBUaGF0IHdvdWxkIG1ha2UgZnV6emluZyBtdWNoIGVhc2llci5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYW55IGNsdWVzIGFib3V0IGl0cyBlbXVsYXRlZCBzdXBwb3J0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHN0cmF0ZWd5IGZvciByZXByb2R1Y2luZyBhbmQgZnV6emluZyB0aGlzIHBvdGVudGlhbCBidWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozMC4wMjEwNTc4NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzNjg5MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Nzg9Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo4NjpcXHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05OS1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTExND1jb25maWcgRFdNQUNfTUVESUFURUtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTIwOlxcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTIyPWNvbmZpZyBEV01BQ19NRVNPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjktXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTMxLVxcdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEzMz1jb25maWcgRFdNQUNfTlVWT1RPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDEtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDMtXFx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNDU9Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1Mi1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XFx0ICBUaGlzIHNlbGVjdHMgUmVuZXNhcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRldmljZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTY1LVxcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3Ni1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg3LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODg6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXFx0ICBjb252ZXJ0ZXIgUENTIGRldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4OlxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTktXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTQtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFsdGVyYSBTT0NGUEdBIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTYtXFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjE4PWNvbmZpZyBEV01BQ19TT1BIR09cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI1LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2OlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjctXFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMjk9Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzNy1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzOS1cXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0OS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1MS1cXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNTM9Y29uZmlnIERXTUFDX1NUSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjE6XFx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Mi1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI2NT1jb25maWcgRFdNQUNfU1RNMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjczOlxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODQtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjg1OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cXHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTYtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk3OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwOC1cXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDk6XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE4LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzE5OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBULUhFQUQgVEgxNTIwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzEtXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMzQ9Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQwLVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBJbnRlbCBLZWVtIEJheVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQyLVxcdCAgU29DLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNDQ9Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNTE6XFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1Mi1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzYxOlxcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjItXFx0ICBkZXZpY2VzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3NjpcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzg9Y29uZmlnIERXTUFDX0lOVEVMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4NS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2OlxcdCAgc3RtbWFjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSW50ZWwgUXVhcmsvRUhML1RHTC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5NTpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMzpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjMwLjMwNDc1NTE4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDczNDMxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUENJIERldmljZSBQb3NzaWJpbGl0aWVzKipcblxuT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgbWluZC4gR3JlYXQsIGBTVE1NQUNfUENJYCBpcyBlbmFibGVkISBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgY2FuIGJlIGV4cG9zZWQgYXMgYSBQQ0kgZGV2aWNlLiBBbmQsIG9mIGNvdXJzZSwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3Igc2luY2UgaXQncyByZWFjaGFibGUgd2l0aGluIFFFTVUuIFRoZW4sIGEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgYERXTUFDX0lOVEVMYCBpcyBhbHNvIHV0aWxpemluZyBQQ0k6IFwiVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0xcIi4gVGhpcyBjb25maXJtcyBteSBzdXNwaWNpb246IHRoaXMgZHJpdmVyICpkZWZpbml0ZWx5KiBoYXMgYSBQQ0kgcGF0aHdheS4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBpcyBleHBvc2VkIGluIGEgd2F5IEkgY2FuIGxldmVyYWdlLiBMZXQncyBzZWUgaWYgdGhhdCdzIHJlYWNoYWJsZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTY0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjM0LjMxMjEwMjI1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODgxMTUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQ1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE4MT1zdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODgtXFx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFxcdTAwM2MgcnhfY291bnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTk2PXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDUtXFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMDY6XFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDA5PXZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDI0OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDI1LVxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgUlggZGVzYy5cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozNC4zODA5MjI2NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2NTMwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBETUEgUlggRGVzY3JpcHRvciBSZXNvdXJjZSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBzZWUgdGhhdCBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkLiBOb3csIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgaW5zaWdodHMgaW50byB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSByZXNvdXJjZXMgYXJlIGJlaW5nIHJlbGVhc2VkLCB0aGUgcG90ZW50aWFsIGZvciBjb250ZW50aW9uLCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgRE1BIFJYIGRlc2NyaXB0b3IgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSBkZXRlcm1pbmUgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MgaW4gdGhlIGRhdGEgZmxvdy4gTGV0J3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NjQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozNy43NDc0NTUzNTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4MTg2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQ1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODE6c3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODgtXFx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFxcdTAwM2MgcnhfY291bnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMzIwPXN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMzNi1lcnJfZG1hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMzNzpcXHRmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDM4PXN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0Ni1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0NDc6XFx0ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTY9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAwNS1cXHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAwNjpcXHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAwNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwMDk9dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMjQ6XFx0XFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMjUtXFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBSWCBkZXNjLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjM4LjA1NTY0OTIzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDAxODIxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJlc291cmNlIE1hbmFnZW1lbnQgaW4gU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHNldmVyYWwga2V5IHBsYWNlcyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXI6IHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGNsb3NlZCB2aWEgYHN0bW1hY19yZWxlYXNlYCwgYW5kIGltcG9ydGFudGx5LCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYHN0bW1hY19yZXN1bWVgLCBgc3RtbWFjX3N1c3BlbmRgLCBhbmQgYHN0bW1hY19vcGVuYC4gVGhpcyBjb25maXJtcyBpdCdzIGEgdml0YWwgcGFydCBvZiB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCBsaWZlY3ljbGUsIHJlYWNoYWJsZSBpbiBtdWx0aXBsZSwgY3J1Y2lhbCBzY2VuYXJpb3MuIFNvLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlIHJlbGF0ZWQgdG8gYHJ4X3EtXHUwMDNlcGFnZV9wb29sYC4gVGhlIGZpeCBpbnZvbHZlcyBudWxsaW5nIG91dCBgcnhfcS1cdTAwM2VwYWdlX3Bvb2xgIGFmdGVyIGl0J3MgZGVzdHJveWVkLiBUaGF0J3MgYSBjbGFzc2ljIGFwcHJvYWNoLCBwcmV2ZW50aW5nIHN1YnNlcXVlbnQgZXJyb25lb3VzIGFjY2Vzc2VzLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC5cblxuTm93LCBsZXQgbWUgZmluZCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LiBJJ2xsIG5lZWQgdG8gbG9jYXRlIGFuZCBjaGVjayB0aG9zZSBgRm9jdXNTeW1ib2xzYCB0byBmaW5kIHRoZSBwcmVjaXNlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLiBJJ20gbG9va2luZyBmb3IgYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBhbmQgZmluYWxseSBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgYm90aCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgIGFuZCBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIEkgc3VzcGVjdCBhcmUgbGlua2VkIHRvIHRoZSBwcm9jZXNzIG9mIGZyZWVpbmcgYW5kIGFsbG9jYXRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NDMuMDU1ODM1MjY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjI5MjI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDI0PXN0YXRpYyBpbmxpbmUgYm9vbCBzdG1tYWNfeGRwX2lzX2VuYWJsZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQyOTp2b2lkIHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MzAtdm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Njk1ND1zdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbnVtX2ZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5OTY6dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0zOC1cXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2V0eF9uYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6Mzk6XFx0XFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00MC1cXHRcXHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9NTg9c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy03NS1cXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2VyeHR4X25hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo3NjpcXHRcXHRzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc3LVxcdFxcdHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NDMuMTIyMTQ3ODMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Nzk5NzIzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyJ3MgUmVzb3VyY2UgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgWERQIHNldHVwIGFuZCB0ZWFyZG93biB3aXRoaW4gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGFuZCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgYXJlLCBhcyBJIHN1c3BlY3RlZCwgY2FsbGluZyBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBUaGUgWERQIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGEgdHJpZ2dlciBwb2ludCBmb3IgdGhlc2UgUlggcXVldWUgZGlzYWJsaW5nIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgaGFkIGEgaHVuY2gsIGFuZCBpdCdzIGNvbmZpcm1lZDogdGhpcyBpcyBob3cgdGhpbmdzIGFyZSBoYXBwZW5pbmcgYXQgdGhlIGxvd2VyIGxldmVscy5cblxuTm93LCBhIGtleSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLiBJIHNlZSB0aGF0J3MgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgYHN0bW1hY19yZWxlYXNlYCBwcm9jZXNzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgRE1BIGRlc2NyaXB0b3IgcmVzb3VyY2VzIGFyZSBiZWluZyBmcmVlZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVsZWFzZWQuIFRoYXQncyBnb29kIHByYWN0aWNlLiBNYWtlcyBtZSB3YW50IHRvIGRpZyBpbnRvIGBzdG1tYWNfcmVsZWFzZWAgaW4gZGV0YWlsIG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgaG93IHRoZSBkcml2ZXIgaXMgY2xlYW5pbmcgdXAgaXRzIHJlc291cmNlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjQ3LjAwMjEyNDYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzYwOTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVsZWFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4Mjg9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI5NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTQ5OlxcdFxcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgcCwgcHJpdi1cXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI5NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTgyOlxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODMtaW5pdF9lcnJvcjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE4Nz1zdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjM4OnN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI2MjpcXHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI2OTogKiAgc3RtbWFjX3JlbGVhc2UgLSBjbG9zZSBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjcwLSAqICBAZGV2IDogZGV2aWNlIHBvaW50ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0Mjc0OnN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mjg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcXHRfX3N0bW1hY19yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mjg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTA1PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTM5OlxcdFxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNC1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxNTpcXHQubmRvX3N0b3AgPSBzdG1tYWNfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTYtXFx0Lm5kb19jaGFuZ2VfbXR1ID0gc3RtbWFjX2NoYW5nZV9tdHUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1OTg9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjAzLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA0OlxcdFxcdHN0bW1hY19yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjIzPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjgtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2Mjk6XFx0XFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjQ3LjA2OTc0OTcwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1Mzg2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkFuYWx5emluZyB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHVuZGVyIGEgZmV3IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgY2FsbGVkIGR1cmluZyBgbmRvX3N0b3BgIChzbywgd2hlbiB0aGUgaW50ZXJmYWNlIGdvZXMgZG93biB2aWEgaWZjb25maWcpLCB3aGVuIHRoZSBNVFUgaXMgY2hhbmdlZCAoYHN0bW1hY19jaGFuZ2VfbXR1YCksIGFuZCBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24gb2YgZWl0aGVyIHRoZSB0cmFuc21pdC9yZWNlaXZlIHF1ZXVlcyBvciByaW5nIHBhcmFtZXRlcnMgKGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWApLiBUaGVzZSBhcmUgYWxsIGtleSBvcGVyYXRpb25zIHdoZXJlIHlvdSdkIGV4cGVjdCBzb21lIGNsZWFudXAgb3IgcmVzb3VyY2UgcmVsZWFzZSB0byBoYXBwZW4uXG5cblRoaXMgc3VnZ2VzdHMgYSBmYWlybHkgY3JpdGljYWwgY2hhbmdlLCBsaWtlbHkgYWRkcmVzc2luZyBhIGJ1Zy4gVGhlIHBsYWNlbWVudCBvZiB0aGlzIGZ1bmN0aW9uIHBvaW50cyB0byBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIG9yIGltcHJvcGVyIHN0YXRlIHRyYW5zaXRpb25zLiBJdCBuZWVkcyBhIGNsb3NlciBsb29rIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgc3VjaCBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9mdGVuIGltcGxpZXMgaXQgY2FuIG1ha2Ugb3IgYnJlYWsgdGhpbmdzLiBOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgaXQgYWN0dWFsbHkgKmRvZXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjUxLjIxNTEzOTU1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwODI1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc3RtbWFjX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODc9c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDIzODpzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDI3ND1zdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0Mjg1OlxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XFx0XFx0X19zdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NTEuNDk1OTczMDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjk1MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gYF9fc3RtbWFjX3JlbGVhc2VgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSB0aGlua2luZywgXCJMZXQncyB6ZXJvIGluIG9uIHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgaW1wbGVtZW50YXRpb24uXCIgVGhhdCBmdW5jdGlvbiBpcyBjcnVjaWFsIGZvciByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBudWFuY2VzLiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIHRoZSByZXNvdXJjZXMgYWxsb2NhdGVkIHRvIGEgc3BlY2lmaWMgU1RNTUFDIGRldmljZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkga25vd2xlZGdlIG9mIHdoYXQgdGhvc2Ugc3BlY2lmaWMgcmVzb3VyY2VzIGFyZSBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQgYXQgdGhlIHBvaW50IG9mIHJlbGVhc2UuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gY2F0ZWdvcml6ZSB0aGUgcXVlc3Rpb25zIEkgbmVlZCBhbnN3ZXJzIHRvLCBsaWtlOiBJcyB0aGVyZSBhbnkgcmlzayBvZiBkb3VibGUtZnJlZSBvciBtZW1vcnkgbGVha3M/IFdoYXQgbG9ja3MgYXJlIGludm9sdmVkLCBhbmQgd2hhdCdzIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gQXJlIGFsbCBuZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb25zIGJlaW5nIHByb3Blcmx5IGRlYWxsb2NhdGVkLCBpbmNsdWRpbmcgRE1BIGRlc2NyaXB0b3JzLCByaW5nIGJ1ZmZlcnMsIGFuZCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXM/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlLCBzbyBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGUgY29kZSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYmVpbmcgZG9uZSBjb3JyZWN0bHkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NjUsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTo1Ni4yMDI5Mjg3NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzOCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDIzODpcXHRzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuNDIzOTpcXHR7XFxuNDI0MDpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjQyNDE6XFx0XFx0dTggY2hhbjtcXG40MjQyOlxcdFxcbjQyNDM6XFx0XFx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXFxuNDI0NDpcXHRcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuNDI0NTpcXHRcXG40MjQ2OlxcdFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuNDI0NzpcXHRcXG40MjQ4OlxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXFxuNDI0OTpcXHRcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuNDI1MDpcXHRcXG40MjUxOlxcdFxcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcXG40MjUyOlxcdFxcbjQyNTM6XFx0XFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXFxuNDI1NDpcXHRcXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xcbjQyNTU6XFx0XFxuNDI1NjpcXHRcXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXFxuNDI1NzpcXHRcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbjQyNTg6XFx0XFxuNDI1OTpcXHRcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG40MjYwOlxcdFxcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZik7XFxuNDI2MTpcXHRcXG40MjYyOlxcdFxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG40MjYzOlxcdFxcbjQyNjQ6XFx0XFx0aWYgKHN0bW1hY19mcGVfc3VwcG9ydGVkKHByaXYpKVxcbjQyNjU6XFx0XFx0XFx0ZXRodG9vbF9tbXN2X3N0b3AoXFx1MDAyNnByaXYtXFx1MDAzZWZwZV9jZmcubW1zdik7XFxuNDI2NjpcXHR9XFxuNDI2NzpcXHRcXG40MjY4OlxcdC8qKlxcbjQyNjk6XFx0ICogIHN0bW1hY19yZWxlYXNlIC0gY2xvc2UgZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbjQyNzA6XFx0ICogIEBkZXYgOiBkZXZpY2UgcG9pbnRlci5cXG40MjcxOlxcdCAqICBEZXNjcmlwdGlvbjpcXG40MjcyOlxcdCAqICBUaGlzIGlzIHRoZSBzdG9wIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXIuXFxuNDI3MzpcXHQgKi9cXG40Mjc0OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG40Mjc1OlxcdHtcXG40Mjc2OlxcdFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuNDI3NzpcXHRcXG40Mjc4OlxcdFxcdC8qIElmIHRoZSBQSFkgb3IgTUFDIGhhcyBXb0wgZW5hYmxlZCwgdGhlbiB0aGUgUEhZIHdpbGwgbm90IGJlXFxuNDI3OTpcXHRcXHQgKiBzdXNwZW5kZWQgd2hlbiBwaHlsaW5rX3N0b3AoKSBpcyBjYWxsZWQgYmVsb3cuIFNldCB0aGUgUEhZXFxuNDI4MDpcXHRcXHQgKiB0byBpdHMgc2xvd2VzdCBzcGVlZCB0byBzYXZlIHBvd2VyLlxcbjQyODE6XFx0XFx0ICovXFxuNDI4MjpcXHRcXHRpZiAoZGV2aWNlX21heV93YWtldXAocHJpdi1cXHUwMDNlZGV2aWNlKSlcXG40MjgzOlxcdFxcdFxcdHBoeWxpbmtfc3BlZWRfZG93bihwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuNDI4NDpcXHRcXG40Mjg1OlxcdFxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG40Mjg2OlxcdFxcbjQyODc6XFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NTYuMjAzMzIxNDA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjAwNDA4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRE1BIERlc2NyaXB0b3IgUmVzb3VyY2UgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgZGVhbGluZyB3aXRoIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgYWRkcmVzc2luZyBzb21ldGhpbmcgaW4gYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBzaW5jZSB0aGF0J3Mgd2hhdCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgIGNhbGxzLiBUaGUgc3BlY2lmaWMgYnVnIHNlZW1zIHRvIGJlIHRoYXQgYHBhZ2VfcG9vbF9kZXN0cm95YCBpcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGByeF9xLVx1MDAzZXBhZ2VfcG9vbGAgdG8gYE5VTExgIGFmdGVyd2FyZC4gUmlnaHQsIHNvIGlmIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYWdhaW4sIHdlJ3JlIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgdGhlIHBhZ2UgcG9vbCDigJMgYSBuYXN0eSBtZW1vcnkgY29ycnVwdGlvbiBidWcuXG5cbk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gV2hlbiBkb2VzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlPyBDb3VsZCBpdCBiZSBkdXJpbmcgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCBmb2xsb3dlZCBieSBgc3RtbWFjX3JlbGVhc2VgPyBPciBwb3RlbnRpYWxseSB3aXRoaW4gYHN0bW1hY19yZWluaXRfcXVldWVzYCBvciBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gPyBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgdG8gY29uZmlybSB0aGUgc2NlbmFyaW9zLiBSZWdhcmRsZXNzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIHByb2JsZW0uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJIHJlbWVtYmVyIHNlZWluZyBgU1RNTUFDX1BDSWAgYW5kIGBEV01BQ19JTlRFTGAgbWVudGlvbmVkLiBMZXQgbWUgZ28gYmFjayB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSBgc3RtbWFjX21haW4uY2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU0MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjAyLjQ2MzM2NTQ4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxNjQ3MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX21haW4ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNC1cXHQgICAgICBjaGFpbl9tb2RlLm8gZHdtYWNfbGliLm8gZHdtYWMxMDAwX2NvcmUubyBkd21hYzEwMDBfZG1hLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjAyLjU0NzUzOTAxNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM4Mzc0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpdC4gU2VlbXMgbGlrZSBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgYmlnIGthaHVuYSBmb3IgZW5hYmxpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS5cblxuTXkgZmlyc3QgcG9ydCBvZiBjYWxsIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGdlbmVyYWwgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBnb3Zlcm5zIGBTVE1NQUNfRVRIYC4gSSB3YW50IHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGdldCBwdWxsZWQgaW4gb3IgZXhjbHVkZWQgYmFzZWQgb24gdGhpcyBtYWluIHN3aXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgYFNUTU1BQ19FVEhgIGZ1bGx5IHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aGV0aGVyIGl0IGlzIHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZSB0YXNrIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzI5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNjg1OTE3ODk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwMDY5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNzQ0MjI3NDYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjM5MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkVuYWJsaW5nIFBDSSBQcm9iaW5nIGZvciBOZXR3b3JrIERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgd29ya2luZyBvbiBtYWtpbmcgc3VyZSB0aGVzZSBuZXR3b3JrIGRyaXZlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoaW4gUUVNVS4gVGhpbmtpbmcgYWhlYWQsIGFuZCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlLCB3ZSByZWFsbHkgbmVlZCB0byBlbmFibGUgYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgLiBUaGlzIGlzIGtleTsgaXQnbGwgZ3VhcmFudGVlIHRoYXQgdGhleSdyZSBwcm9iZWFibGUgdmlhIFBDSSBpbiB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDcnVjaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3RpbmcsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCB0aGUgYFNUTU1BQ2AgaXMgbWVhbnQgdG8gYmUgcHJvYmVkIGJ5IFBDSS4gSXQgYWxzbyBtYWtlIHNlbnNlIHRoYXQgdGhlIGBEV01BQ19JTlRFTGAgc2hvdWxkIGFzIHdlbGwuXG5cbk5vdywgYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLCBhbmQgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgd29uJ3QgYnJlYWsgYW55dGhpbmcuIEJlZm9yZSB3ZSBqdW1wIGluIGFuZCBlbmFibGUgdGhlc2UgY29uZmlncywgYSBxdWljayBkZXBlbmRlbmN5IGNoZWNrIG9uIGJvdGggYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgaW5hZHZlcnRlbnRseSBwdWxsaW5nIGluIGEgYnVuY2ggb2YgdW53YW50ZWQgbW9kdWxlcyBvciBjb25mbGljdGluZyB3aXRoIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjb25maWd1cmF0aW9uLiBRdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsIGJlZm9yZSBjb21taXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY4MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjEzLjQ2ODE1MjkzMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2Nzg1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoxMy41MjY4NDAwMjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NjAzMTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgU1RNTUFDX1BDSWAgb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciB3aGVuIGl0J3MgdXNlZCB3aXRoIFBDSSBpbnRlcmZhY2VzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaGFuZGxlcyBQQ0ktc3BlY2lmaWMgZmVhdHVyZXMsIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcywgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBvciBjb25zaWRlcmF0aW9ucyB3aGVuIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLiBJIGFudGljaXBhdGUgdGhlIEtjb25maWcgZmlsZSB3aWxsIG91dGxpbmUgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGUgYFBDSWAgYnVzIGluZnJhc3RydWN0dXJlLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGJlIGNvdXBsZWQgd2l0aCBgU1RNTUFDX1BDSWAgc3VjaCBhcyBETUEgb3Igc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zLCBhbmQgd2hhdCBlZmZlY3QgdGhpcyBjb25maWd1cmF0aW9uIG1pZ2h0IGhhdmUgb24gdGhlIG92ZXJhbGwgc3lzdGVtIGltYWdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGlmZmVyZW50IFBDSSBpbnRlcnJ1cHQgbW9kZWxzLCBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUENJIGNvbnRleHQsIGFuZCBob3cgaXQgZGV0ZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgYmFzZWQgb24gUENJIGRldmljZSBJRHMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYSBnaXZlbiBoYXJkd2FyZSBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxNTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoxNy45MDI4NzYzNzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MTcuOTAyOTYxODA3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjI0OTkxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgRFdNQUNfSU5URUxgKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYERXTUFDX0lOVEVMYC4gSXQncyBhIGtleSBpZGVudGlmaWVyLCBhbmQgaW5zdGFudGx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzIChvciBhdCBsZWFzdCwgc3BhcmtzIGEgZmV3IGNvbm5lY3Rpb25zKS4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24/IEEgZHJpdmVyPyBJcyBpdCBwYXJ0IG9mIHRoZSBrZXJuZWw/IFRoZSBtZXJlIG1lbnRpb24gb2YgYElOVEVMYCBuYXJyb3dzIHRoZSBmb2N1cyBjb25zaWRlcmFibHkuIE15IGV4cGVyaWVuY2Ugc2NyZWFtczogXCJJbnZlc3RpZ2F0ZSB0aGlzIGZ1cnRoZXIuXCIgUGVyaGFwcyBpdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSwgb3IgYSBxdWlyayBpbiBob3cgSW50ZWwgaGFuZGxlcyBzb21lIG1lbW9yeSBhY2Nlc3MsIG1heWJlIGV2ZW4gYW4gb2RkaXR5IHdpdGggaXRzIG5ldHdvcmsgaW50ZXJmYWNlcy4gSSBoYXZlIGEgbG90IG9mIGF2ZW51ZXMgdG8gc3RhcnQgZnJvbSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc4NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MjMuOTI1NDYzODY2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzc4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoyMy45MjU1NTY0NjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxMzk3MjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBFdGhlcm5ldCBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb25zIOKAkyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBEV01BQ19JTlRFTGAuIFRob3NlIHNlZW0gbGlrZSBnb29kIGNob2ljZXMgdG8gZW5hYmxlIGJhc2VkIG9uIHdoYXQgSSdtIHNlZWluZy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgU1RNTUFDX1BDSWAgcmVsaWVzIG9uIGJvdGggYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4gQW5kIGBEV01BQ19JTlRFTGAgaGFzIGV2ZW4gbW9yZSBkZXBlbmRlbmNpZXM7IGl0IG5lZWRzIGBYODZgLCBgUENJYCwgYENPTU1PTl9DTEtgLCAqYW5kKiBgQUNQSWAuIEdvdCBpdC5cblxuQWxyaWdodCwgc2luY2UgdGhlIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvciwgSSBjYW4ganVzdCBsaXN0IHRob3NlIHRocmVlLlxuXG5MZXQgbWUgZ28gb24gYW5kIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgUEFHRV9QT09MYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MzAuMjM5NTMzNTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjE4Njg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ4OD1jb25maWcgTkVUX0RFVkxJTktcXG4tLVxcbm5ldC9LY29uZmlnLTQ5MS1cXG5uZXQvS2NvbmZpZzo0OTI6Y29uZmlnIFBBR0VfUE9PTFxcbm5ldC9LY29uZmlnLTQ5My1cXHRib29sXFxubmV0L0tjb25maWctNDk0LVxcbm5ldC9LY29uZmlnOjQ5NTpjb25maWcgUEFHRV9QT09MX1NUQVRTXFxubmV0L0tjb25maWctNDk2LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozMC4zMDU3Mjg1M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU1MTkwNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgUEFHRV9QT09MYCBhbmQgYFNUTU1BQ19FVEhgIFJlbGF0aW9uc2hpcCoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgYFBBR0VfUE9PTGAgYmVpbmcgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGlzIGBTVE1NQUNfRVRIYCB0aGUgZHJpdmVyIHJlc3BvbnNpYmxlIGZvciB0aGF0IHNlbGVjdGlvbj8gVGhpcyB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG9yIHJlZnV0ZSBteSBzdXNwaWNpb24uIEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgZGV2aWNlIHRyZWUgYmluZGluZ3Mgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgU1RNTUFDX0VUSGAgZHJpdmVyLiBBcmUgdGhlcmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIGZsYWdzIHRoYXQgdHJpZ2dlciB0aGUgdXNlIG9mIGEgYFBBR0VfUE9PTGAgd2l0aCB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGNvbnRyb2xsZXI/IEknbGwgYWxzbyB3YW50IHRvIHJldmlldyB0aGUgZHJpdmVyJ3MgY29kZSBpdHNlbGYgdG8gc2VlIGhvdyBpdCBhbGxvY2F0ZXMgYW5kIG1hbmFnZXMgaXRzIG1lbW9yeS4gSWYgaXQncyBpbmRlZWQgaW50ZXJhY3Rpbmcgd2l0aCBhIGBQQUdFX1BPT0xgLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0IGNob2ljZSwgYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggYmVzdCBwcmFjdGljZXMgZm9yIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZS4gQW55IHJlbGF0ZWQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFyZSBhbHNvIG9mIGludGVyZXN0LiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGRyaXZlciwgaW4gdGhpcyBzdWJzeXN0ZW0sIHRoYXQgaXMgcmVxdWVzdGluZyBhIHBhZ2UgcG9vbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3NTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozNC4yNjA5MjMxMDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNTQ0ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MzQuMzMyNDc2MTc1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTI1OTcwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBUYXJnZXQgZm9yIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGNvbmZpcm1pbmcsIHllcywgdGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxldmFudCB0byB0aGlzIGFyZWE6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHNwZWNpZmljIHN5bWJvbHMuXG5cbk15IGluaXRpYWwgbGlzdCBvZiBzeW1ib2xzIHRvIGZvY3VzIG9uIGluY2x1ZGVkOiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIGBzdG1tYWNfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQuIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgYm90aCBjYWxsIGl0LiBBbmQgdGhlbiBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGNhbGxzIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIGluIHR1cm4sIGFzIGRpc2N1c3NlZCwgY2FsbHMgdGhlIG1haW4gZnVuY3Rpb24sIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRmluYWxseSwgYHN0bW1hY19yZWxlYXNlYCBjYWxscyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLlxuXG5TbywgdG8gYmUgbW9yZSBwcmVjaXNlLCB0aGUgcmVmaW5lZCBzZXQgb2YgZm9jdXMgc3ltYm9scyBpczogYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC4gTm93IGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHRoZSBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjU5LjI1ODQ1MTE2OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNTc5MDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NTg6c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy05OC1cXHRyZXR1cm4gcG9vbCA/IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2wocHJpdiwgcG9vbCwgcXVldWUpIDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6OTk6XFx0XFx0ICAgICAgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMDAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMTowMC45OTQyNDg1MjdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjAwODc1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgYnVnIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgWERQIHBvb2wgc2V0dXAuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgc3RtbWFjX3hkcF9zZXR1cF9wb29sYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgaW52b2tlZCB3aGVuIHRoZSBYRFAgcG9vbCBpcyBpbml0aWFsaXplZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIEFGX1hEUC5cblxuVGhlIGNydXggb2YgdGhlIGZpeCBsaWVzIGluIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRXNzZW50aWFsbHksIHRoZXJlJ3MgYSBwcm9ibGVtIHdoZXJlIHRoZSBgcnhfcS1cdTAwM2VwYWdlX3Bvb2xgIGlzbid0IGJlaW5nIHNldCB0byBgTlVMTGAgYWZ0ZXIgdGhlIHBvb2wgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uLCBwYXJ0aWN1bGFybHkgaWYgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBhZ2FpbiBhZnRlciB0aGUgcG9vbCBpcyBhbHJlYWR5IGdvbmUuIE5vdCBpZGVhbCwgYW5kIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHdhbnQgdG8gZ2V0IHJpZ2h0LlxuXG5HaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSwgdGhlIGltcGFjdCBjb3VsZCBiZSBzaWduaWZpY2FudC4gQSB2dWxuZXJhYmlsaXR5IGxpa2UgdGhpcyB3b3VsZCBiZSB2ZXJ5IGludGVyZXN0aW5nIHRvIGZ1enouXG5cblRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBcIldvcnRoRnV6emluZ1wiIGFuZCBlbmFibGUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBmb3IgbXkgdGVzdGluZzogXCJTVE1NQUNfRVRIXCIsIFwiU1RNTUFDX1BDSVwiLCBhbmQgXCJEV01BQ19JTlRFTFwiLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gRE1BIHJlc291cmNlIGZyZWVpbmc6IGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzYCwgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNob3QgYXQgZXhwb3NpbmcgdGhlIHVuZGVybHlpbmcgdnVsbmVyYWJpbGl0eSwgb3IgY29uZmlybWluZyB0aGUgZml4LiBNeSByZWFzb25pbmcgZm9yIHRoaXMgaXMgY2xlYXI6IHdlIGhhdmUgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgYSBwYWdlIHBvb2wgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTIzNywiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDE6MzIuMzE0MzQxOTgzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMjE3NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwic3RtbWFjX2Rpc2FibGVfcnhfcXVldWVcIixcbiAgICBcInN0bW1hY194ZHBfZGlzYWJsZV9wb29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwiZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcInN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlXCIsXG4gICAgXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIHBhZ2VfcG9vbCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBzZXR0aW5nIHRoZSBwb2ludGVyIHRvIE5VTEwgYWZ0ZXIgZGVzdHJ1Y3Rpb24uIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow75rcr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 14:47:14 +0000 UTC FinishedAt: 2026-06-30 15:01:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "DWMAC_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "DWMAC_INTEL" ], "series_id": "fdc340b7-a848-4f2c-bf2c-046f4f491631" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__free_dma_rx_desc_resources", "free_dma_rx_desc_resources", "free_dma_desc_resources", "stmmac_disable_rx_queue", "stmmac_xdp_disable_pool" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NGM2MDI0N2U2NTBiN2I1NTNjYzAzZTY0MzJmNmI5MWZjZjAwNTFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTQ6NTk6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li40YjhmMjgxNGQzYjVmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yMTcyLDggJiM0MzsyMTcyLDEwIEBAIHN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2cnhfcS1cdTAwM2V4ZHBfcnhxKTtcbiBcbiBcdGtmcmVlKHJ4X3EtXHUwMDNlYnVmX3Bvb2wpO1xuLVx0aWYgKHJ4X3EtXHUwMDNlcGFnZV9wb29sKVxuJiM0MztcdGlmIChyeF9xLVx1MDAzZXBhZ2VfcG9vbCkge1xuIFx0XHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVx1MDAzZXBhZ2VfcG9vbCk7XG4mIzQzO1x0XHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvZiBwYWdlX3Bvb2wgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYnkgc2V0dGluZyB0aGUgcG9pbnRlciB0byBOVUxMIGFmdGVyIGRlc3RydWN0aW9uLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTRjNjAyNDdlNjUwYjdiNTUzY2MwM2U2NDMyZjZiOTFmY2YwMDUxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE0OjU5OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZTUuLjRiOGYyODE0ZDNiNWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTIxNzIsOCAmIzQzOzIxNzIsMTAgQEAgc3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCXhkcF9yeHFfaW5mb191bnJlZygmYW1wO3J4X3EtJmd0O3hkcF9yeHEpOwogCiAJa2ZyZWUocnhfcS0mZ3Q7YnVmX3Bvb2wpOwotCWlmIChyeF9xLSZndDtwYWdlX3Bvb2wpCiYjNDM7CWlmIChyeF9xLSZndDtwYWdlX3Bvb2wpIHsKIAkJcGFnZV9wb29sX2Rlc3Ryb3kocnhfcS0mZ3Q7cGFnZV9wb29sKTsKJiM0MzsJCXJ4X3EtJmd0O3BhZ2VfcG9vbCA9IE5VTEw7CiYjNDM7CX0KIH0KIAogc3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFNUTU1BQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYHJ4X3EtJmd0O3BhZ2VfcG9vbCA9IE5VTEw7YCBhZnRlciB0aGUgYHBhZ2VfcG9vbF9kZXN0cm95KHJ4X3EtJmd0O3BhZ2VfcG9vbCk7YCBjYWxsIHdpdGhpbiB0aGUgYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyByZWFjaGFibGUgY29kZT8mIzM0OyBhbmQsIG1vcmUgaW1wb3J0YW50bHksICYjMzQ7SXMgdGhpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nPyYjMzQ7CgpUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWNjZXNzaWJpbGl0eS4gQXJlIHRoZXNlIGRldmljZXMgdXN1YWxseSBlbXVsYXRlZCwgb3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayB3aXRoIGhhcmR3YXJlIGFjY2Vzcz8gT2Z0ZW4sIHRoZXNlIFNUTWljcm8gTUFDcyBzaG93IHVwIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBzb21ldGltZXMgdGhleSYjMzk7cmUgZXhwb3NlZCBhcyBQQ0kgZGV2aWNlcywgb3IsIGhvcGVmdWxseSwgZW11bGF0ZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4KCkhvbGQgb24uLi4gYHN0bW1hY2AgaXMgYWN0dWFsbHkgYSAqcmVhbGx5KiBjb21tb24gZHJpdmVyLCBpc24mIzM5O3QgaXQ/IFRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGVtdWxhdGVkIGluIFFFTVUuIEV4Y2VsbGVudCEgVGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgbXVjaCBlYXNpZXIuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhbnkgY2x1ZXMgYWJvdXQgaXRzIGVtdWxhdGVkIHN1cHBvcnQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgc3RyYXRlZ3kgZm9yIHJlcHJvZHVjaW5nIGFuZCBmdXp6aW5nIHRoaXMgcG90ZW50aWFsIGJ1Zy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0Olx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29Dczpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjg2Olx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIEluZ2VuaWMgU29Dc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyOS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTUyLVx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc2LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4ODpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4Olx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxNC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjUtXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2Olx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjM3LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQ5LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjY1PWNvbmZpZyBEV01BQ19TVE0zMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNzM6XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODU6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTc6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOTpcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTk6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDAtXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cdCAgU29DLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNTU9Y29uZmlnIERXTUFDX1RFR1JBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Mi1cdCAgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg1LVx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2Olx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk1Olx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEzOlx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTY0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBDSSBEZXZpY2UgUG9zc2liaWxpdGllcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IG1pbmQuIEdyZWF0LCBgU1RNTUFDX1BDSWAgaXMgZW5hYmxlZCEgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNhbiBiZSBleHBvc2VkIGFzIGEgUENJIGRldmljZS4gQW5kLCBvZiBjb3Vyc2UsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Igc2luY2UgaXQmIzM5O3MgcmVhY2hhYmxlIHdpdGhpbiBRRU1VLiBUaGVuLCBhIHF1aWNrIHNjYW4gcmV2ZWFscyB0aGF0IGBEV01BQ19JTlRFTGAgaXMgYWxzbyB1dGlsaXppbmcgUENJOiAmIzM0O1RoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMJiMzNDsuIFRoaXMgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGlzIGRyaXZlciAqZGVmaW5pdGVseSogaGFzIGEgUENJIHBhdGh3YXkuIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBpZiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgaXMgZXhwb3NlZCBpbiBhIHdheSBJIGNhbiBsZXZlcmFnZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0JiMzOTtzIHJlYWNoYWJsZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjEyOT1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEzOTogKiBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzIC0gZnJlZSBSWCBkbWEgZGVzYyByZXNvdXJjZXMgKHBlciBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNDUtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIxODE9c3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4OC1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgcnhfY291bnQ7IHF1ZXVlJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE4OTpcdFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTY9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDUtXHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDA2Olx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzAwOT12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDI0Olx0XHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyNS1cdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgUlggZGVzYy5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjQKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRE1BIFJYIERlc2NyaXB0b3IgUmVzb3VyY2UgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBzZWUgdGhhdCBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkLiBOb3csIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgaW5zaWdodHMgaW50byB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSByZXNvdXJjZXMgYXJlIGJlaW5nIHJlbGVhc2VkLCB0aGUgcG90ZW50aWFsIGZvciBjb250ZW50aW9uLCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgRE1BIFJYIGRlc2NyaXB0b3IgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSBkZXRlcm1pbmUgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MgaW4gdGhlIGRhdGEgZmxvdy4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTM4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQwLSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE0NDpzdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0NS1cdFx0XHRcdFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE4MTpzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODItXHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTg4LVx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFx1MDAzYyByeF9jb3VudDsgcXVldWUmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5Olx0XHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjMyMD1zdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LWVycl9kbWE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIzMzc6XHRmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDM4PXN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0NDYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ0NzpcdGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIGRtYV9jb25mKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTk2PXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA1LVx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAwNjpcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDA3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwMDk9dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAyNDpcdFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMjUtXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IFJYIGRlc2MuXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjc5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZXNvdXJjZSBNYW5hZ2VtZW50IGluIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHNldmVyYWwga2V5IHBsYWNlcyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXI6IHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGNsb3NlZCB2aWEgYHN0bW1hY19yZWxlYXNlYCwgYW5kIGltcG9ydGFudGx5LCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYHN0bW1hY19yZXN1bWVgLCBgc3RtbWFjX3N1c3BlbmRgLCBhbmQgYHN0bW1hY19vcGVuYC4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBhIHZpdGFsIHBhcnQgb2YgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgbGlmZWN5Y2xlLCByZWFjaGFibGUgaW4gbXVsdGlwbGUsIGNydWNpYWwgc2NlbmFyaW9zLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlIHJlbGF0ZWQgdG8gYHJ4X3EtJmd0O3BhZ2VfcG9vbGAuIFRoZSBmaXggaW52b2x2ZXMgbnVsbGluZyBvdXQgYHJ4X3EtJmd0O3BhZ2VfcG9vbGAgYWZ0ZXIgaXQmIzM5O3MgZGVzdHJveWVkLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcHByb2FjaCwgcHJldmVudGluZyBzdWJzZXF1ZW50IGVycm9uZW91cyBhY2Nlc3Nlcy4gVGhpcyBpcyBhIGNsZWFyLCBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCB0byBpbmNyZWFzZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuCgpOb3csIGxldCBtZSBmaW5kIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3QuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGFuZCBjaGVjayB0aG9zZSBgRm9jdXNTeW1ib2xzYCB0byBmaW5kIHRoZSBwcmVjaXNlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGZvciBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGFuZCBmaW5hbGx5IGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAuIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBib3RoIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlYCwgd2hpY2ggSSBzdXNwZWN0IGFyZSBsaW5rZWQgdG8gdGhlIHByb2Nlc3Mgb2YgZnJlZWluZyBhbmQgYWxsb2NhdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDI0PXN0YXRpYyBpbmxpbmUgYm9vbCBzdG1tYWNfeGRwX2lzX2VuYWJsZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQyOTp2b2lkIHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzMC12b2lkIHN0bW1hY19lbmFibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Njk1ND1zdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbnVtX2ZyYW1lcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5OTY6dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMzgtXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2V0eF9uYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzozOTpcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTQwLVx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTU4PXN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc1LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y2gtXHUwMDNlcnh0eF9uYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo3NjpcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc3LVx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTkzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIFJlc291cmNlIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgWERQIHNldHVwIGFuZCB0ZWFyZG93biB3aXRoaW4gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGFuZCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgYXJlLCBhcyBJIHN1c3BlY3RlZCwgY2FsbGluZyBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBUaGUgWERQIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGEgdHJpZ2dlciBwb2ludCBmb3IgdGhlc2UgUlggcXVldWUgZGlzYWJsaW5nIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgaGFkIGEgaHVuY2gsIGFuZCBpdCYjMzk7cyBjb25maXJtZWQ6IHRoaXMgaXMgaG93IHRoaW5ncyBhcmUgaGFwcGVuaW5nIGF0IHRoZSBsb3dlciBsZXZlbHMuCgpOb3csIGEga2V5IHBvaW50IG9mIGludGVyZXN0IGlzIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AuIEkgc2VlIHRoYXQmIzM5O3MgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgYHN0bW1hY19yZWxlYXNlYCBwcm9jZXNzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgRE1BIGRlc2NyaXB0b3IgcmVzb3VyY2VzIGFyZSBiZWluZyBmcmVlZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVsZWFzZWQuIFRoYXQmIzM5O3MgZ29vZCBwcmFjdGljZS4gTWFrZXMgbWUgd2FudCB0byBkaWcgaW50byBgc3RtbWFjX3JlbGVhc2VgIGluIGRldGFpbCBub3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGNsZWFuaW5nIHVwIGl0cyByZXNvdXJjZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4Mjg9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yOTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTQ5Olx0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIHAsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTgyOlx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTgzLWluaXRfZXJyb3I6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMzg6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyNjI6XHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjY5OiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI3MC0gKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI3My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI3NDpzdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTQtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE1Olx0Lm5kb19zdG9wID0gc3RtbWFjX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTYtXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1OTg9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwMy1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MDQ6XHRcdHN0bW1hY19yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjIzPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYyOTpcdFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NDQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipBbmFseXppbmcgdGhlIGBfX3N0bW1hY19yZWxlYXNlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHVuZGVyIGEgZmV3IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYG5kb19zdG9wYCAoc28sIHdoZW4gdGhlIGludGVyZmFjZSBnb2VzIGRvd24gdmlhIGlmY29uZmlnKSwgd2hlbiB0aGUgTVRVIGlzIGNoYW5nZWQgKGBzdG1tYWNfY2hhbmdlX210dWApLCBhbmQgZHVyaW5nIHJlLWluaXRpYWxpemF0aW9uIG9mIGVpdGhlciB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBxdWV1ZXMgb3IgcmluZyBwYXJhbWV0ZXJzIChgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgLCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gKS4gVGhlc2UgYXJlIGFsbCBrZXkgb3BlcmF0aW9ucyB3aGVyZSB5b3UmIzM5O2QgZXhwZWN0IHNvbWUgY2xlYW51cCBvciByZXNvdXJjZSByZWxlYXNlIHRvIGhhcHBlbi4KClRoaXMgc3VnZ2VzdHMgYSBmYWlybHkgY3JpdGljYWwgY2hhbmdlLCBsaWtlbHkgYWRkcmVzc2luZyBhIGJ1Zy4gVGhlIHBsYWNlbWVudCBvZiB0aGlzIGZ1bmN0aW9uIHBvaW50cyB0byBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIG9yIGltcHJvcGVyIHN0YXRlIHRyYW5zaXRpb25zLiBJdCBuZWVkcyBhIGNsb3NlciBsb29rIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgc3VjaCBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9mdGVuIGltcGxpZXMgaXQgY2FuIG1ha2Ugb3IgYnJlYWsgdGhpbmdzLiBOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zdG1tYWNfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMzg6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQyNzQ9c3RhdGljIGludCBzdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NjUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBgX19zdG1tYWNfcmVsZWFzZWAqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGBfX3N0bW1hY19yZWxlYXNlYCBpbXBsZW1lbnRhdGlvbi4mIzM0OyBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIG51YW5jZXMuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gYSBzcGVjaWZpYyBTVE1NQUMgZGV2aWNlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2Ygd2hhdCB0aG9zZSBzcGVjaWZpYyByZXNvdXJjZXMgYXJlIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCBhdCB0aGUgcG9pbnQgb2YgcmVsZWFzZS4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBjYXRlZ29yaXplIHRoZSBxdWVzdGlvbnMgSSBuZWVkIGFuc3dlcnMgdG8sIGxpa2U6IElzIHRoZXJlIGFueSByaXNrIG9mIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcz8gV2hhdCBsb2NrcyBhcmUgaW52b2x2ZWQsIGFuZCB3aGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gQXJlIGFsbCBuZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb25zIGJlaW5nIHByb3Blcmx5IGRlYWxsb2NhdGVkLCBpbmNsdWRpbmcgRE1BIGRlc2NyaXB0b3JzLCByaW5nIGJ1ZmZlcnMsIGFuZCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXM/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlLCBzbyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBiZWluZyBkb25lIGNvcnJlY3RseSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQyMzg6XHRzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG40MjM5Olx0e1xuNDI0MDpcdFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbjQyNDE6XHRcdHU4IGNoYW47XG40MjQyOlx0XG40MjQzOlx0XHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbjQyNDQ6XHRcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuNDI0NTpcdFxuNDI0NjpcdFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbjQyNDc6XHRcbjQyNDg6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbjQyNDk6XHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbjQyNTA6XHRcbjQyNTE6XHRcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcbjQyNTI6XHRcbjQyNTM6XHRcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuNDI1NDpcdFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbjQyNTU6XHRcbjQyNTY6XHRcdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbjQyNTc6XHRcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG40MjU4Olx0XG40MjU5Olx0XHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbjQyNjA6XHRcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuNDI2MTpcdFxuNDI2MjpcdFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuNDI2MzpcdFxuNDI2NDpcdFx0aWYgKHN0bW1hY19mcGVfc3VwcG9ydGVkKHByaXYpKVxuNDI2NTpcdFx0XHRldGh0b29sX21tc3Zfc3RvcChcdTAwMjZwcml2LVx1MDAzZWZwZV9jZmcubW1zdik7XG40MjY2Olx0fVxuNDI2NzpcdFxuNDI2ODpcdC8qKlxuNDI2OTpcdCAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbjQyNzA6XHQgKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuNDI3MTpcdCAqICBEZXNjcmlwdGlvbjpcbjQyNzI6XHQgKiAgVGhpcyBpcyB0aGUgc3RvcCBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyLlxuNDI3MzpcdCAqL1xuNDI3NDpcdHN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjQyNzU6XHR7XG40Mjc2Olx0XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuNDI3NzpcdFxuNDI3ODpcdFx0LyogSWYgdGhlIFBIWSBvciBNQUMgaGFzIFdvTCBlbmFibGVkLCB0aGVuIHRoZSBQSFkgd2lsbCBub3QgYmVcbjQyNzk6XHRcdCAqIHN1c3BlbmRlZCB3aGVuIHBoeWxpbmtfc3RvcCgpIGlzIGNhbGxlZCBiZWxvdy4gU2V0IHRoZSBQSFlcbjQyODA6XHRcdCAqIHRvIGl0cyBzbG93ZXN0IHNwZWVkIHRvIHNhdmUgcG93ZXIuXG40MjgxOlx0XHQgKi9cbjQyODI6XHRcdGlmIChkZXZpY2VfbWF5X3dha2V1cChwcml2LVx1MDAzZWRldmljZSkpXG40MjgzOlx0XHRcdHBoeWxpbmtfc3BlZWRfZG93bihwcml2LVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbjQyODQ6XHRcbjQyODU6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbjQyODY6XHRcbjQyODc6XHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTQxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERNQSBEZXNjcmlwdG9yIFJlc291cmNlIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBhZGRyZXNzaW5nIHNvbWV0aGluZyBpbiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgIGNhbGxzLiBUaGUgc3BlY2lmaWMgYnVnIHNlZW1zIHRvIGJlIHRoYXQgYHBhZ2VfcG9vbF9kZXN0cm95YCBpcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGByeF9xLSZndDtwYWdlX3Bvb2xgIHRvIGBOVUxMYCBhZnRlcndhcmQuIFJpZ2h0LCBzbyBpZiB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGFnYWluLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvZiB0aGUgcGFnZSBwb29sIOKAkyBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gV2hlbiBkb2VzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlPyBDb3VsZCBpdCBiZSBkdXJpbmcgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCBmb2xsb3dlZCBieSBgc3RtbWFjX3JlbGVhc2VgPyBPciBwb3RlbnRpYWxseSB3aXRoaW4gYHN0bW1hY19yZWluaXRfcXVldWVzYCBvciBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gPyBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgdG8gY29uZmlybSB0aGUgc2NlbmFyaW9zLiBSZWdhcmRsZXNzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIHByb2JsZW0uCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYCBtZW50aW9uZWQuIExldCBtZSBnbyBiYWNrIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIGBzdG1tYWNfbWFpbi5jYC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19tYWluLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00LVx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTMyOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBTZWVtcyBsaWtlIGBDT05GSUdfU1RNTUFDX0VUSGAgaXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgYmlnIGthaHVuYSBmb3IgZW5hYmxpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS4KCk15IGZpcnN0IHBvcnQgb2YgY2FsbCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBnZW5lcmFsIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZ292ZXJucyBgU1RNTUFDX0VUSGAuIEkgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBnZXQgcHVsbGVkIGluIG9yIGV4Y2x1ZGVkIGJhc2VkIG9uIHRoaXMgbWFpbiBzd2l0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGBTVE1NQUNfRVRIYCBmdWxseSBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgd2hldGhlciBpdCBpcyB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGUgdGFzayBhdCBoYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRW5hYmxpbmcgUENJIFByb2JpbmcgZm9yIE5ldHdvcmsgRHJpdmVycyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIHdvcmtpbmcgb24gbWFraW5nIHN1cmUgdGhlc2UgbmV0d29yayBkcml2ZXJzIGJlaGF2ZSBjb3JyZWN0bHkgd2l0aGluIFFFTVUuIFRoaW5raW5nIGFoZWFkLCBhbmQgY29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSwgd2UgcmVhbGx5IG5lZWQgdG8gZW5hYmxlIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYC4gVGhpcyBpcyBrZXk7IGl0JiMzOTtsbCBndWFyYW50ZWUgdGhhdCB0aGV5JiMzOTtyZSBwcm9iZWFibGUgdmlhIFBDSSBpbiB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDcnVjaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3RpbmcsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRoYXQgdGhlIGBTVE1NQUNgIGlzIG1lYW50IHRvIGJlIHByb2JlZCBieSBQQ0kuIEl0IGFsc28gbWFrZSBzZW5zZSB0aGF0IHRoZSBgRFdNQUNfSU5URUxgIHNob3VsZCBhcyB3ZWxsLgoKTm93LCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIGFuZCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyB3b24mIzM5O3QgYnJlYWsgYW55dGhpbmcuIEJlZm9yZSB3ZSBqdW1wIGluIGFuZCBlbmFibGUgdGhlc2UgY29uZmlncywgYSBxdWljayBkZXBlbmRlbmN5IGNoZWNrIG9uIGJvdGggYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGluYWR2ZXJ0ZW50bHkgcHVsbGluZyBpbiBhIGJ1bmNoIG9mIHVud2FudGVkIG1vZHVsZXMgb3IgY29uZmxpY3Rpbmcgd2l0aCBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY29uZmlndXJhdGlvbi4gUXVpY2sgc2FuaXR5IGNoZWNrIGlzIGVzc2VudGlhbCBiZWZvcmUgY29tbWl0dGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNTEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFNUTU1BQ19QQ0lgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIgd2hlbiBpdCYjMzk7cyB1c2VkIHdpdGggUENJIGludGVyZmFjZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBoYW5kbGVzIFBDSS1zcGVjaWZpYyBmZWF0dXJlcywgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIGNvbnNpZGVyYXRpb25zIHdoZW4gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEkgYW50aWNpcGF0ZSB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoZSBgUENJYCBidXMgaW5mcmFzdHJ1Y3R1cmUsIHdoYXQgb3RoZXIgZmVhdHVyZXMgbWlnaHQgYmUgY291cGxlZCB3aXRoIGBTVE1NQUNfUENJYCBzdWNoIGFzIERNQSBvciBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMsIGFuZCB3aGF0IGVmZmVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gbWlnaHQgaGF2ZSBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gaW1hZ2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGlmZmVyZW50IFBDSSBpbnRlcnJ1cHQgbW9kZWxzLCBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUENJIGNvbnRleHQsIGFuZCBob3cgaXQgZGV0ZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgYmFzZWQgb24gUENJIGRldmljZSBJRHMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYSBnaXZlbiBoYXJkd2FyZSBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3ODQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYERXTUFDX0lOVEVMYCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYERXTUFDX0lOVEVMYC4gSXQmIzM5O3MgYSBrZXkgaWRlbnRpZmllciwgYW5kIGluc3RhbnRseSBzZXRzIG9mZiBhbGFybSBiZWxscyAob3IgYXQgbGVhc3QsIHNwYXJrcyBhIGZldyBjb25uZWN0aW9ucykuIElzIGl0IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBBIGRyaXZlcj8gSXMgaXQgcGFydCBvZiB0aGUga2VybmVsPyBUaGUgbWVyZSBtZW50aW9uIG9mIGBJTlRFTGAgbmFycm93cyB0aGUgZm9jdXMgY29uc2lkZXJhYmx5LiBNeSBleHBlcmllbmNlIHNjcmVhbXM6ICYjMzQ7SW52ZXN0aWdhdGUgdGhpcyBmdXJ0aGVyLiYjMzQ7IFBlcmhhcHMgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlLCBvciBhIHF1aXJrIGluIGhvdyBJbnRlbCBoYW5kbGVzIHNvbWUgbWVtb3J5IGFjY2VzcywgbWF5YmUgZXZlbiBhbiBvZGRpdHkgd2l0aCBpdHMgbmV0d29yayBpbnRlcmZhY2VzLiBJIGhhdmUgYSBsb3Qgb2YgYXZlbnVlcyB0byBzdGFydCBmcm9tIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM3OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzc4Olx0Y29uZmlnIERXTUFDX0lOVEVMXG4gMzc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzODA6XHRcdGRlZmF1bHQgWDg2XG4gMzgxOlx0XHRkZXBlbmRzIG9uIFg4NiBcdTAwMjZcdTAwMjYgUENJXG4gMzgyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzODM6XHRcdGRlcGVuZHMgb24gQUNQSVxuIDM4NDpcdFx0aGVscFxuIDM4NTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbiAzODY6XHRcdCAgc3RtbWFjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSW50ZWwgUXVhcmsvRUhML1RHTC5cbiAzODc6XHRcbiAzODg6XHRjb25maWcgRFdNQUNfTE9PTkdTT05cbiAzODk6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMzkwOlx0XHRkZWZhdWx0IE1BQ0hfTE9PTkdTT042NFxuIDM5MTpcdFx0ZGVwZW5kcyBvbiAoTUFDSF9MT09OR1NPTjY0IHx8IENPTVBJTEVfVEVTVCkgXHUwMDI2XHUwMDI2IFBDSVxuIDM5MjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gMzkzOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDM5NDpcdFx0aGVscFxuIDM5NTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG4gMzk2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxuIDM5NzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBFdGhlcm5ldCBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbnMg4oCTIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gVGhvc2Ugc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUgYmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgU1RNTUFDX1BDSWAgcmVsaWVzIG9uIGJvdGggYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4gQW5kIGBEV01BQ19JTlRFTGAgaGFzIGV2ZW4gbW9yZSBkZXBlbmRlbmNpZXM7IGl0IG5lZWRzIGBYODZgLCBgUENJYCwgYENPTU1PTl9DTEtgLCAqYW5kKiBgQUNQSWAuIEdvdCBpdC4KCkFscmlnaHQsIHNpbmNlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFjY291bnRlZCBmb3IsIEkgY2FuIGp1c3QgbGlzdCB0aG9zZSB0aHJlZS4KCkxldCBtZSBnbyBvbiBhbmQgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBQQUdFX1BPT0xgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ4OD1jb25maWcgTkVUX0RFVkxJTktcbi0tXG5uZXQvS2NvbmZpZy00OTEtXG5uZXQvS2NvbmZpZzo0OTI6Y29uZmlnIFBBR0VfUE9PTFxubmV0L0tjb25maWctNDkzLVx0Ym9vbFxubmV0L0tjb25maWctNDk0LVxubmV0L0tjb25maWc6NDk1OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbm5ldC9LY29uZmlnLTQ5Ni1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc1MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBQQUdFX1BPT0xgIGFuZCBgU1RNTUFDX0VUSGAgUmVsYXRpb25zaGlwKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBQQUdFX1BPT0xgIGJlaW5nIHNlbGVjdGVkLCBhbmQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBpcyBgU1RNTUFDX0VUSGAgdGhlIGRyaXZlciByZXNwb25zaWJsZSBmb3IgdGhhdCBzZWxlY3Rpb24/IFRoaXMgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSBvciByZWZ1dGUgbXkgc3VzcGljaW9uLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IHRoZSByZWxldmFudCBkZXZpY2UgdHJlZSBiaW5kaW5ncyBvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGBTVE1NQUNfRVRIYCBkcml2ZXIuIEFyZSB0aGVyZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB0cmlnZ2VyIHRoZSB1c2Ugb2YgYSBgUEFHRV9QT09MYCB3aXRoIHRoaXMgc3BlY2lmaWMgRXRoZXJuZXQgY29udHJvbGxlcj8gSSYjMzk7bGwgYWxzbyB3YW50IHRvIHJldmlldyB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgaXRzZWxmIHRvIHNlZSBob3cgaXQgYWxsb2NhdGVzIGFuZCBtYW5hZ2VzIGl0cyBtZW1vcnkuIElmIGl0JiMzOTtzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIGEgYFBBR0VfUE9PTGAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQgY2hvaWNlLCBhbmQgd2hldGhlciBpdCBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlLiBBbnkgcmVsYXRlZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb2YgaW50ZXJlc3QuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgZHJpdmVyLCBpbiB0aGlzIHN1YnN5c3RlbSwgdGhhdCBpcyByZXF1ZXN0aW5nIGEgcGFnZSBwb29sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE2MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgVGFyZ2V0IGZvciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGNvbmZpcm1pbmcsIHllcywgdGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxldmFudCB0byB0aGlzIGFyZWE6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHNwZWNpZmljIHN5bWJvbHMuCgpNeSBpbml0aWFsIGxpc3Qgb2Ygc3ltYm9scyB0byBmb2N1cyBvbiBpbmNsdWRlZDogYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLCBgc3RtbWFjX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC4KCk5vdywgZGlnZ2luZyBkZWVwZXIsIGl0IHNlZW1zIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgYm90aCBjYWxsIGl0LiBBbmQgdGhlbiBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGNhbGxzIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIGluIHR1cm4sIGFzIGRpc2N1c3NlZCwgY2FsbHMgdGhlIG1haW4gZnVuY3Rpb24sIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRmluYWxseSwgYHN0bW1hY19yZWxlYXNlYCBjYWxscyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLgoKU28sIHRvIGJlIG1vcmUgcHJlY2lzZSwgdGhlIHJlZmluZWQgc2V0IG9mIGZvY3VzIHN5bWJvbHMgaXM6IGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCwgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuIE5vdyBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYCBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdGhlIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NTg6c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtOTgtXHRyZXR1cm4gcG9vbCA/IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2wocHJpdiwgcG9vbCwgcXVldWUpIDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo5OTpcdFx0ICAgICAgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjM3CgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDI1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgYnVnIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgWERQIHBvb2wgc2V0dXAuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgc3RtbWFjX3hkcF9zZXR1cF9wb29sYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgaW52b2tlZCB3aGVuIHRoZSBYRFAgcG9vbCBpcyBpbml0aWFsaXplZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIEFGX1hEUC4KClRoZSBjcnV4IG9mIHRoZSBmaXggbGllcyBpbiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AuIEVzc2VudGlhbGx5LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2hlcmUgdGhlIGByeF9xLSZndDtwYWdlX3Bvb2xgIGlzbiYjMzk7dCBiZWluZyBzZXQgdG8gYE5VTExgIGFmdGVyIHRoZSBwb29sIGlzIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGNsYXNzaWMgcmVjaXBlIGZvciBhIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiwgcGFydGljdWxhcmx5IGlmIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYWdhaW4gYWZ0ZXIgdGhlIHBvb2wgaXMgYWxyZWFkeSBnb25lLiBOb3QgaWRlYWwsIGFuZCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSB3YW50IHRvIGdldCByaWdodC4KCkdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJLCB0aGUgaW1wYWN0IGNvdWxkIGJlIHNpZ25pZmljYW50LiBBIHZ1bG5lcmFiaWxpdHkgbGlrZSB0aGlzIHdvdWxkIGJlIHZlcnkgaW50ZXJlc3RpbmcgdG8gZnV6ei4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBhbmQgZW5hYmxlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIG15IHRlc3Rpbmc6ICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LCAmIzM0O1NUTU1BQ19QQ0kmIzM0OywgYW5kICYjMzQ7RFdNQUNfSU5URUwmIzM0Oy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBrZXkgc3ltYm9scyByZWxhdGVkIHRvIERNQSByZXNvdXJjZSBmcmVlaW5nOiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzaG90IGF0IGV4cG9zaW5nIHRoZSB1bmRlcmx5aW5nIHZ1bG5lcmFiaWxpdHksIG9yIGNvbmZpcm1pbmcgdGhlIGZpeC4gTXkgcmVhc29uaW5nIGZvciB0aGlzIGlzIGNsZWFyOiB3ZSBoYXZlIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIGEgcGFnZSBwb29sIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNC41MzY0OTEyMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjkwOTYzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwiZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcInN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlXCIsXG4gICAgXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIHBhZ2VfcG9vbCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBzZXR0aW5nIHRoZSBwb2ludGVyIHRvIE5VTEwgYWZ0ZXIgZGVzdHJ1Y3Rpb24uIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNC41MzY0OTkwNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Mzg1NjQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0YzYwMjQ3ZTY1MGI3YjU1M2NjMDNlNjQzMmY2YjkxZmNmMDA1MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTQ6NTk6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCAzNTkxNzU1ZWEzMGJlNS4uNGI4ZjI4MTRkM2I1ZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjE3Miw4ICsyMTcyLDEwIEBAIHN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNnJ4X3EtXFx1MDAzZXhkcF9yeHEpO1xcbiBcXG4gXFx0a2ZyZWUocnhfcS1cXHUwMDNlYnVmX3Bvb2wpO1xcbi1cXHRpZiAocnhfcS1cXHUwMDNlcGFnZV9wb29sKVxcbitcXHRpZiAocnhfcS1cXHUwMDNlcGFnZV9wb29sKSB7XFxuIFxcdFxcdHBhZ2VfcG9vbF9kZXN0cm95KHJ4X3EtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuK1xcdFxcdHJ4X3EtXFx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OToyNS4wMjEyNjkwMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzU0NDMwMjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwic3RtbWFjX2Rpc2FibGVfcnhfcXVldWVcIixcbiAgICBcInN0bW1hY194ZHBfZGlzYWJsZV9wb29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTRjNjAyNDdlNjUwYjdiNTUzY2MwM2U2NDMyZjZiOTFmY2YwMDUxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE0OjU5OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li40YjhmMjgxNGQzYjVmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yMTcyLDggKzIxNzIsMTAgQEAgc3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdHhkcF9yeHFfaW5mb191bnJlZyhcdTAwMjZyeF9xLVx1MDAzZXhkcF9yeHEpO1xuIFxuIFx0a2ZyZWUocnhfcS1cdTAwM2VidWZfcG9vbCk7XG4tXHRpZiAocnhfcS1cdTAwM2VwYWdlX3Bvb2wpXG4rXHRpZiAocnhfcS1cdTAwM2VwYWdlX3Bvb2wpIHtcbiBcdFx0cGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO1xuK1x0XHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjI1LjAyMTI3MzI4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTk3Nzg4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU1RNTUFDIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYHJ4X3EtXHUwMDNlcGFnZV9wb29sID0gTlVMTDtgIGFmdGVyIHRoZSBgcGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO2AgY2FsbCB3aXRoaW4gdGhlIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgcmVhY2hhYmxlIGNvZGU/XCIgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBcIklzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz9cIlxuXG5UaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIE5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWNjZXNzaWJpbGl0eS4gQXJlIHRoZXNlIGRldmljZXMgdXN1YWxseSBlbXVsYXRlZCwgb3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayB3aXRoIGhhcmR3YXJlIGFjY2Vzcz8gT2Z0ZW4sIHRoZXNlIFNUTWljcm8gTUFDcyBzaG93IHVwIGluIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBzb21ldGltZXMgdGhleSdyZSBleHBvc2VkIGFzIFBDSSBkZXZpY2VzLCBvciwgaG9wZWZ1bGx5LCBlbXVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5Ib2xkIG9uLi4uIGBzdG1tYWNgIGlzIGFjdHVhbGx5IGEgKnJlYWxseSogY29tbW9uIGRyaXZlciwgaXNuJ3QgaXQ/IFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgdG8gYmUgZW11bGF0ZWQgaW4gUUVNVS4gRXhjZWxsZW50ISBUaGF0IHdvdWxkIG1ha2UgZnV6emluZyBtdWNoIGVhc2llci5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYW55IGNsdWVzIGFib3V0IGl0cyBlbXVsYXRlZCBzdXBwb3J0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHN0cmF0ZWd5IGZvciByZXByb2R1Y2luZyBhbmQgZnV6emluZyB0aGlzIHBvdGVudGlhbCBidWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozMC4wMjEwNTc4NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzNjg5MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Nzg9Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo4NjpcXHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05OS1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTExND1jb25maWcgRFdNQUNfTUVESUFURUtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTIwOlxcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTIyPWNvbmZpZyBEV01BQ19NRVNPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjktXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTMxLVxcdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEzMz1jb25maWcgRFdNQUNfTlVWT1RPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDEtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDMtXFx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNDU9Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1Mi1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XFx0ICBUaGlzIHNlbGVjdHMgUmVuZXNhcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRldmljZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTY1LVxcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3Ni1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg3LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODg6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXFx0ICBjb252ZXJ0ZXIgUENTIGRldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4OlxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTktXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTQtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFsdGVyYSBTT0NGUEdBIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTYtXFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjE4PWNvbmZpZyBEV01BQ19TT1BIR09cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI1LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2OlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjctXFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMjk9Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzNy1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzOS1cXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0OS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1MS1cXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNTM9Y29uZmlnIERXTUFDX1NUSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjE6XFx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Mi1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI2NT1jb25maWcgRFdNQUNfU1RNMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjczOlxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODQtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjg1OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cXHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTYtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk3OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwOC1cXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDk6XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE4LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzE5OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBULUhFQUQgVEgxNTIwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzEtXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMzQ9Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQwLVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBJbnRlbCBLZWVtIEJheVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQyLVxcdCAgU29DLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNDQ9Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNTE6XFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1Mi1cXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzYxOlxcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjItXFx0ICBkZXZpY2VzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3NjpcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzg9Y29uZmlnIERXTUFDX0lOVEVMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4NS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2OlxcdCAgc3RtbWFjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSW50ZWwgUXVhcmsvRUhML1RHTC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5NTpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMzpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjMwLjMwNDc1NTE4OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDczNDMxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUENJIERldmljZSBQb3NzaWJpbGl0aWVzKipcblxuT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgbWluZC4gR3JlYXQsIGBTVE1NQUNfUENJYCBpcyBlbmFibGVkISBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgY2FuIGJlIGV4cG9zZWQgYXMgYSBQQ0kgZGV2aWNlLiBBbmQsIG9mIGNvdXJzZSwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3Igc2luY2UgaXQncyByZWFjaGFibGUgd2l0aGluIFFFTVUuIFRoZW4sIGEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgYERXTUFDX0lOVEVMYCBpcyBhbHNvIHV0aWxpemluZyBQQ0k6IFwiVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0xcIi4gVGhpcyBjb25maXJtcyBteSBzdXNwaWNpb246IHRoaXMgZHJpdmVyICpkZWZpbml0ZWx5KiBoYXMgYSBQQ0kgcGF0aHdheS4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBpcyBleHBvc2VkIGluIGEgd2F5IEkgY2FuIGxldmVyYWdlLiBMZXQncyBzZWUgaWYgdGhhdCdzIHJlYWNoYWJsZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTY0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjM0LjMxMjEwMjI1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODgxMTUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQ1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE4MT1zdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODgtXFx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFxcdTAwM2MgcnhfY291bnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTk2PXZvaWQgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDUtXFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMDY6XFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDA5PXZvaWQgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAyMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDI0OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDI1LVxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXQgUlggZGVzYy5cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozNC4zODA5MjI2NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2NTMwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBETUEgUlggRGVzY3JpcHRvciBSZXNvdXJjZSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBzZWUgdGhhdCBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkLiBOb3csIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgaW5zaWdodHMgaW50byB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSByZXNvdXJjZXMgYXJlIGJlaW5nIHJlbGVhc2VkLCB0aGUgcG90ZW50aWFsIGZvciBjb250ZW50aW9uLCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgRE1BIFJYIGRlc2NyaXB0b3IgbWFuYWdlbWVudC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSBkZXRlcm1pbmUgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MgaW4gdGhlIGRhdGEgZmxvdy4gTGV0J3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NjQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTozNy43NDc0NTUzNTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4MTg2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTI5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM5OiAqIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMgLSBmcmVlIFJYIGRtYSBkZXNjIHJlc291cmNlcyAocGVyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0MC0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNDQ6c3RhdGljIHZvaWQgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTQ1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODE6c3RhdGljIHZvaWQgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODgtXFx0Zm9yIChxdWV1ZSA9IDA7IHF1ZXVlIFxcdTAwM2MgcnhfY291bnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTg5OlxcdFxcdF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMzIwPXN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMzNi1lcnJfZG1hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMzNzpcXHRmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDM4PXN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0Ni1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0NDc6XFx0ZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMocHJpdiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5OTY9dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAwNS1cXHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzAwNjpcXHRfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzAwNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwMDk9dm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcwMjQ6XFx0XFx0X19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwMjUtXFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBSWCBkZXNjLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjM4LjA1NTY0OTIzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDAxODIxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJlc291cmNlIE1hbmFnZW1lbnQgaW4gU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHNldmVyYWwga2V5IHBsYWNlcyB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXI6IHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGNsb3NlZCB2aWEgYHN0bW1hY19yZWxlYXNlYCwgYW5kIGltcG9ydGFudGx5LCBpbiB0aGUgZXJyb3IgcGF0aHMgb2YgYHN0bW1hY19yZXN1bWVgLCBgc3RtbWFjX3N1c3BlbmRgLCBhbmQgYHN0bW1hY19vcGVuYC4gVGhpcyBjb25maXJtcyBpdCdzIGEgdml0YWwgcGFydCBvZiB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCBsaWZlY3ljbGUsIHJlYWNoYWJsZSBpbiBtdWx0aXBsZSwgY3J1Y2lhbCBzY2VuYXJpb3MuIFNvLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlIHJlbGF0ZWQgdG8gYHJ4X3EtXHUwMDNlcGFnZV9wb29sYC4gVGhlIGZpeCBpbnZvbHZlcyBudWxsaW5nIG91dCBgcnhfcS1cdTAwM2VwYWdlX3Bvb2xgIGFmdGVyIGl0J3MgZGVzdHJveWVkLiBUaGF0J3MgYSBjbGFzc2ljIGFwcHJvYWNoLCBwcmV2ZW50aW5nIHN1YnNlcXVlbnQgZXJyb25lb3VzIGFjY2Vzc2VzLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC5cblxuTm93LCBsZXQgbWUgZmluZCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LiBJJ2xsIG5lZWQgdG8gbG9jYXRlIGFuZCBjaGVjayB0aG9zZSBgRm9jdXNTeW1ib2xzYCB0byBmaW5kIHRoZSBwcmVjaXNlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLiBJJ20gbG9va2luZyBmb3IgYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBhbmQgZmluYWxseSBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgYm90aCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgIGFuZCBgc3RtbWFjX2VuYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIEkgc3VzcGVjdCBhcmUgbGlua2VkIHRvIHRoZSBwcm9jZXNzIG9mIGZyZWVpbmcgYW5kIGFsbG9jYXRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NDMuMDU1ODM1MjY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjI5MjI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDI0PXN0YXRpYyBpbmxpbmUgYm9vbCBzdG1tYWNfeGRwX2lzX2VuYWJsZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQyOTp2b2lkIHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MzAtdm9pZCBzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Njk1ND1zdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbnVtX2ZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5OTY6dm9pZCBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0zOC1cXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2V0eF9uYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6Mzk6XFx0XFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy00MC1cXHRcXHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9NTg9c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy03NS1cXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2VyeHR4X25hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzo3NjpcXHRcXHRzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTc3LVxcdFxcdHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NDMuMTIyMTQ3ODMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Nzk5NzIzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyJ3MgUmVzb3VyY2UgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgWERQIHNldHVwIGFuZCB0ZWFyZG93biB3aXRoaW4gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGFuZCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgYXJlLCBhcyBJIHN1c3BlY3RlZCwgY2FsbGluZyBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLiBUaGUgWERQIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGEgdHJpZ2dlciBwb2ludCBmb3IgdGhlc2UgUlggcXVldWUgZGlzYWJsaW5nIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgaGFkIGEgaHVuY2gsIGFuZCBpdCdzIGNvbmZpcm1lZDogdGhpcyBpcyBob3cgdGhpbmdzIGFyZSBoYXBwZW5pbmcgYXQgdGhlIGxvd2VyIGxldmVscy5cblxuTm93LCBhIGtleSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLiBJIHNlZSB0aGF0J3MgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgYHN0bW1hY19yZWxlYXNlYCBwcm9jZXNzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgRE1BIGRlc2NyaXB0b3IgcmVzb3VyY2VzIGFyZSBiZWluZyBmcmVlZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVsZWFzZWQuIFRoYXQncyBnb29kIHByYWN0aWNlLiBNYWtlcyBtZSB3YW50IHRvIGRpZyBpbnRvIGBzdG1tYWNfcmVsZWFzZWAgaW4gZGV0YWlsIG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgaG93IHRoZSBkcml2ZXIgaXMgY2xlYW5pbmcgdXAgaXRzIHJlc291cmNlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjQ3LjAwMjEyNDYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzYwOTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVsZWFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4Mjg9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI5NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTQ5OlxcdFxcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgcCwgcHJpdi1cXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI5NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTgyOlxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODMtaW5pdF9lcnJvcjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE4Nz1zdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjM4OnN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI2MjpcXHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI2OTogKiAgc3RtbWFjX3JlbGVhc2UgLSBjbG9zZSBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjcwLSAqICBAZGV2IDogZGV2aWNlIHBvaW50ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0Mjc0OnN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mjg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDI4NTpcXHRfX3N0bW1hY19yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mjg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTA1PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTM5OlxcdFxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNC1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxNTpcXHQubmRvX3N0b3AgPSBzdG1tYWNfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTYtXFx0Lm5kb19jaGFuZ2VfbXR1ID0gc3RtbWFjX2NoYW5nZV9tdHUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1OTg9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjAzLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA0OlxcdFxcdHN0bW1hY19yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjIzPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjgtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2Mjk6XFx0XFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjQ3LjA2OTc0OTcwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1Mzg2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkFuYWx5emluZyB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHVuZGVyIGEgZmV3IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgY2FsbGVkIGR1cmluZyBgbmRvX3N0b3BgIChzbywgd2hlbiB0aGUgaW50ZXJmYWNlIGdvZXMgZG93biB2aWEgaWZjb25maWcpLCB3aGVuIHRoZSBNVFUgaXMgY2hhbmdlZCAoYHN0bW1hY19jaGFuZ2VfbXR1YCksIGFuZCBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24gb2YgZWl0aGVyIHRoZSB0cmFuc21pdC9yZWNlaXZlIHF1ZXVlcyBvciByaW5nIHBhcmFtZXRlcnMgKGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWApLiBUaGVzZSBhcmUgYWxsIGtleSBvcGVyYXRpb25zIHdoZXJlIHlvdSdkIGV4cGVjdCBzb21lIGNsZWFudXAgb3IgcmVzb3VyY2UgcmVsZWFzZSB0byBoYXBwZW4uXG5cblRoaXMgc3VnZ2VzdHMgYSBmYWlybHkgY3JpdGljYWwgY2hhbmdlLCBsaWtlbHkgYWRkcmVzc2luZyBhIGJ1Zy4gVGhlIHBsYWNlbWVudCBvZiB0aGlzIGZ1bmN0aW9uIHBvaW50cyB0byBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MsIG9yIGltcHJvcGVyIHN0YXRlIHRyYW5zaXRpb25zLiBJdCBuZWVkcyBhIGNsb3NlciBsb29rIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgc3VjaCBjcml0aWNhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9mdGVuIGltcGxpZXMgaXQgY2FuIG1ha2Ugb3IgYnJlYWsgdGhpbmdzLiBOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgYF9fc3RtbWFjX3JlbGVhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgaXQgYWN0dWFsbHkgKmRvZXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE0OjU5OjUxLjIxNTEzOTU1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwODI1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc3RtbWFjX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODc9c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDIzODpzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDI3ND1zdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0Mjg1OlxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDU9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XFx0XFx0X19zdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NTEuNDk1OTczMDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjk1MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gYF9fc3RtbWFjX3JlbGVhc2VgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSB0aGlua2luZywgXCJMZXQncyB6ZXJvIGluIG9uIHRoZSBgX19zdG1tYWNfcmVsZWFzZWAgaW1wbGVtZW50YXRpb24uXCIgVGhhdCBmdW5jdGlvbiBpcyBjcnVjaWFsIGZvciByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBudWFuY2VzLiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIHRoZSByZXNvdXJjZXMgYWxsb2NhdGVkIHRvIGEgc3BlY2lmaWMgU1RNTUFDIGRldmljZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkga25vd2xlZGdlIG9mIHdoYXQgdGhvc2Ugc3BlY2lmaWMgcmVzb3VyY2VzIGFyZSBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQgYXQgdGhlIHBvaW50IG9mIHJlbGVhc2UuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gY2F0ZWdvcml6ZSB0aGUgcXVlc3Rpb25zIEkgbmVlZCBhbnN3ZXJzIHRvLCBsaWtlOiBJcyB0aGVyZSBhbnkgcmlzayBvZiBkb3VibGUtZnJlZSBvciBtZW1vcnkgbGVha3M/IFdoYXQgbG9ja3MgYXJlIGludm9sdmVkLCBhbmQgd2hhdCdzIHRoZSBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gQXJlIGFsbCBuZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb25zIGJlaW5nIHByb3Blcmx5IGRlYWxsb2NhdGVkLCBpbmNsdWRpbmcgRE1BIGRlc2NyaXB0b3JzLCByaW5nIGJ1ZmZlcnMsIGFuZCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXM/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlLCBzbyBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGUgY29kZSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYmVpbmcgZG9uZSBjb3JyZWN0bHkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NjUsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNDo1OTo1Ni4yMDI5Mjg3NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzOCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDIzODpcXHRzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuNDIzOTpcXHR7XFxuNDI0MDpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjQyNDE6XFx0XFx0dTggY2hhbjtcXG40MjQyOlxcdFxcbjQyNDM6XFx0XFx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXFxuNDI0NDpcXHRcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuNDI0NTpcXHRcXG40MjQ2OlxcdFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuNDI0NzpcXHRcXG40MjQ4OlxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXFxuNDI0OTpcXHRcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuNDI1MDpcXHRcXG40MjUxOlxcdFxcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcXG40MjUyOlxcdFxcbjQyNTM6XFx0XFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXFxuNDI1NDpcXHRcXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xcbjQyNTU6XFx0XFxuNDI1NjpcXHRcXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXFxuNDI1NzpcXHRcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbjQyNTg6XFx0XFxuNDI1OTpcXHRcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG40MjYwOlxcdFxcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZik7XFxuNDI2MTpcXHRcXG40MjYyOlxcdFxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG40MjYzOlxcdFxcbjQyNjQ6XFx0XFx0aWYgKHN0bW1hY19mcGVfc3VwcG9ydGVkKHByaXYpKVxcbjQyNjU6XFx0XFx0XFx0ZXRodG9vbF9tbXN2X3N0b3AoXFx1MDAyNnByaXYtXFx1MDAzZWZwZV9jZmcubW1zdik7XFxuNDI2NjpcXHR9XFxuNDI2NzpcXHRcXG40MjY4OlxcdC8qKlxcbjQyNjk6XFx0ICogIHN0bW1hY19yZWxlYXNlIC0gY2xvc2UgZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbjQyNzA6XFx0ICogIEBkZXYgOiBkZXZpY2UgcG9pbnRlci5cXG40MjcxOlxcdCAqICBEZXNjcmlwdGlvbjpcXG40MjcyOlxcdCAqICBUaGlzIGlzIHRoZSBzdG9wIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXIuXFxuNDI3MzpcXHQgKi9cXG40Mjc0OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG40Mjc1OlxcdHtcXG40Mjc2OlxcdFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuNDI3NzpcXHRcXG40Mjc4OlxcdFxcdC8qIElmIHRoZSBQSFkgb3IgTUFDIGhhcyBXb0wgZW5hYmxlZCwgdGhlbiB0aGUgUEhZIHdpbGwgbm90IGJlXFxuNDI3OTpcXHRcXHQgKiBzdXNwZW5kZWQgd2hlbiBwaHlsaW5rX3N0b3AoKSBpcyBjYWxsZWQgYmVsb3cuIFNldCB0aGUgUEhZXFxuNDI4MDpcXHRcXHQgKiB0byBpdHMgc2xvd2VzdCBzcGVlZCB0byBzYXZlIHBvd2VyLlxcbjQyODE6XFx0XFx0ICovXFxuNDI4MjpcXHRcXHRpZiAoZGV2aWNlX21heV93YWtldXAocHJpdi1cXHUwMDNlZGV2aWNlKSlcXG40MjgzOlxcdFxcdFxcdHBoeWxpbmtfc3BlZWRfZG93bihwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuNDI4NDpcXHRcXG40Mjg1OlxcdFxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG40Mjg2OlxcdFxcbjQyODc6XFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTQ6NTk6NTYuMjAzMzIxNDA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjAwNDA4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRE1BIERlc2NyaXB0b3IgUmVzb3VyY2UgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgZGVhbGluZyB3aXRoIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgYWRkcmVzc2luZyBzb21ldGhpbmcgaW4gYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBzaW5jZSB0aGF0J3Mgd2hhdCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgIGNhbGxzLiBUaGUgc3BlY2lmaWMgYnVnIHNlZW1zIHRvIGJlIHRoYXQgYHBhZ2VfcG9vbF9kZXN0cm95YCBpcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGByeF9xLVx1MDAzZXBhZ2VfcG9vbGAgdG8gYE5VTExgIGFmdGVyd2FyZC4gUmlnaHQsIHNvIGlmIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYWdhaW4sIHdlJ3JlIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgdGhlIHBhZ2UgcG9vbCDigJMgYSBuYXN0eSBtZW1vcnkgY29ycnVwdGlvbiBidWcuXG5cbk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gV2hlbiBkb2VzIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlPyBDb3VsZCBpdCBiZSBkdXJpbmcgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCBmb2xsb3dlZCBieSBgc3RtbWFjX3JlbGVhc2VgPyBPciBwb3RlbnRpYWxseSB3aXRoaW4gYHN0bW1hY19yZWluaXRfcXVldWVzYCBvciBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gPyBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgdG8gY29uZmlybSB0aGUgc2NlbmFyaW9zLiBSZWdhcmRsZXNzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIHByb2JsZW0uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJIHJlbWVtYmVyIHNlZWluZyBgU1RNTUFDX1BDSWAgYW5kIGBEV01BQ19JTlRFTGAgbWVudGlvbmVkLiBMZXQgbWUgZ28gYmFjayB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSBgc3RtbWFjX21haW4uY2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU0MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjAyLjQ2MzM2NTQ4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxNjQ3MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX21haW4ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNC1cXHQgICAgICBjaGFpbl9tb2RlLm8gZHdtYWNfbGliLm8gZHdtYWMxMDAwX2NvcmUubyBkd21hYzEwMDBfZG1hLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjAyLjU0NzUzOTAxNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM4Mzc0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpdC4gU2VlbXMgbGlrZSBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgYmlnIGthaHVuYSBmb3IgZW5hYmxpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS5cblxuTXkgZmlyc3QgcG9ydCBvZiBjYWxsIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGdlbmVyYWwgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBnb3Zlcm5zIGBTVE1NQUNfRVRIYC4gSSB3YW50IHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGdldCBwdWxsZWQgaW4gb3IgZXhjbHVkZWQgYmFzZWQgb24gdGhpcyBtYWluIHN3aXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgYFNUTU1BQ19FVEhgIGZ1bGx5IHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aGV0aGVyIGl0IGlzIHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZSB0YXNrIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzI5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNjg1OTE3ODk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODMwMDY5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNzQ0MjI3NDYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjM5MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkVuYWJsaW5nIFBDSSBQcm9iaW5nIGZvciBOZXR3b3JrIERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgd29ya2luZyBvbiBtYWtpbmcgc3VyZSB0aGVzZSBuZXR3b3JrIGRyaXZlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoaW4gUUVNVS4gVGhpbmtpbmcgYWhlYWQsIGFuZCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlLCB3ZSByZWFsbHkgbmVlZCB0byBlbmFibGUgYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgLiBUaGlzIGlzIGtleTsgaXQnbGwgZ3VhcmFudGVlIHRoYXQgdGhleSdyZSBwcm9iZWFibGUgdmlhIFBDSSBpbiB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDcnVjaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3RpbmcsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCB0aGUgYFNUTU1BQ2AgaXMgbWVhbnQgdG8gYmUgcHJvYmVkIGJ5IFBDSS4gSXQgYWxzbyBtYWtlIHNlbnNlIHRoYXQgdGhlIGBEV01BQ19JTlRFTGAgc2hvdWxkIGFzIHdlbGwuXG5cbk5vdywgYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLCBhbmQgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgd29uJ3QgYnJlYWsgYW55dGhpbmcuIEJlZm9yZSB3ZSBqdW1wIGluIGFuZCBlbmFibGUgdGhlc2UgY29uZmlncywgYSBxdWljayBkZXBlbmRlbmN5IGNoZWNrIG9uIGJvdGggYFNUTU1BQ19QQ0lgIGFuZCBgRFdNQUNfSU5URUxgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgaW5hZHZlcnRlbnRseSBwdWxsaW5nIGluIGEgYnVuY2ggb2YgdW53YW50ZWQgbW9kdWxlcyBvciBjb25mbGljdGluZyB3aXRoIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjb25maWd1cmF0aW9uLiBRdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsIGJlZm9yZSBjb21taXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY4MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjEzLjQ2ODE1MjkzMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2Nzg1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoxMy41MjY4NDAwMjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NjAzMTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgU1RNTUFDX1BDSWAgb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciB3aGVuIGl0J3MgdXNlZCB3aXRoIFBDSSBpbnRlcmZhY2VzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaGFuZGxlcyBQQ0ktc3BlY2lmaWMgZmVhdHVyZXMsIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcywgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBvciBjb25zaWRlcmF0aW9ucyB3aGVuIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLiBJIGFudGljaXBhdGUgdGhlIEtjb25maWcgZmlsZSB3aWxsIG91dGxpbmUgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGUgYFBDSWAgYnVzIGluZnJhc3RydWN0dXJlLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGJlIGNvdXBsZWQgd2l0aCBgU1RNTUFDX1BDSWAgc3VjaCBhcyBETUEgb3Igc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zLCBhbmQgd2hhdCBlZmZlY3QgdGhpcyBjb25maWd1cmF0aW9uIG1pZ2h0IGhhdmUgb24gdGhlIG92ZXJhbGwgc3lzdGVtIGltYWdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGlmZmVyZW50IFBDSSBpbnRlcnJ1cHQgbW9kZWxzLCBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUENJIGNvbnRleHQsIGFuZCBob3cgaXQgZGV0ZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgYmFzZWQgb24gUENJIGRldmljZSBJRHMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYSBnaXZlbiBoYXJkd2FyZSBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxNTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoxNy45MDI4NzYzNzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MTcuOTAyOTYxODA3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjI0OTkxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgRFdNQUNfSU5URUxgKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYERXTUFDX0lOVEVMYC4gSXQncyBhIGtleSBpZGVudGlmaWVyLCBhbmQgaW5zdGFudGx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzIChvciBhdCBsZWFzdCwgc3BhcmtzIGEgZmV3IGNvbm5lY3Rpb25zKS4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24/IEEgZHJpdmVyPyBJcyBpdCBwYXJ0IG9mIHRoZSBrZXJuZWw/IFRoZSBtZXJlIG1lbnRpb24gb2YgYElOVEVMYCBuYXJyb3dzIHRoZSBmb2N1cyBjb25zaWRlcmFibHkuIE15IGV4cGVyaWVuY2Ugc2NyZWFtczogXCJJbnZlc3RpZ2F0ZSB0aGlzIGZ1cnRoZXIuXCIgUGVyaGFwcyBpdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSwgb3IgYSBxdWlyayBpbiBob3cgSW50ZWwgaGFuZGxlcyBzb21lIG1lbW9yeSBhY2Nlc3MsIG1heWJlIGV2ZW4gYW4gb2RkaXR5IHdpdGggaXRzIG5ldHdvcmsgaW50ZXJmYWNlcy4gSSBoYXZlIGEgbG90IG9mIGF2ZW51ZXMgdG8gc3RhcnQgZnJvbSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc4NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MjMuOTI1NDYzODY2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzc4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDoyMy45MjU1NTY0NjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxMzk3MjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBFdGhlcm5ldCBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb25zIOKAkyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBEV01BQ19JTlRFTGAuIFRob3NlIHNlZW0gbGlrZSBnb29kIGNob2ljZXMgdG8gZW5hYmxlIGJhc2VkIG9uIHdoYXQgSSdtIHNlZWluZy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgU1RNTUFDX1BDSWAgcmVsaWVzIG9uIGJvdGggYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4gQW5kIGBEV01BQ19JTlRFTGAgaGFzIGV2ZW4gbW9yZSBkZXBlbmRlbmNpZXM7IGl0IG5lZWRzIGBYODZgLCBgUENJYCwgYENPTU1PTl9DTEtgLCAqYW5kKiBgQUNQSWAuIEdvdCBpdC5cblxuQWxyaWdodCwgc2luY2UgdGhlIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvciwgSSBjYW4ganVzdCBsaXN0IHRob3NlIHRocmVlLlxuXG5MZXQgbWUgZ28gb24gYW5kIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgUEFHRV9QT09MYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MzAuMjM5NTMzNTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjE4Njg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ4OD1jb25maWcgTkVUX0RFVkxJTktcXG4tLVxcbm5ldC9LY29uZmlnLTQ5MS1cXG5uZXQvS2NvbmZpZzo0OTI6Y29uZmlnIFBBR0VfUE9PTFxcbm5ldC9LY29uZmlnLTQ5My1cXHRib29sXFxubmV0L0tjb25maWctNDk0LVxcbm5ldC9LY29uZmlnOjQ5NTpjb25maWcgUEFHRV9QT09MX1NUQVRTXFxubmV0L0tjb25maWctNDk2LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozMC4zMDU3Mjg1M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU1MTkwNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgUEFHRV9QT09MYCBhbmQgYFNUTU1BQ19FVEhgIFJlbGF0aW9uc2hpcCoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgYFBBR0VfUE9PTGAgYmVpbmcgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGlzIGBTVE1NQUNfRVRIYCB0aGUgZHJpdmVyIHJlc3BvbnNpYmxlIGZvciB0aGF0IHNlbGVjdGlvbj8gVGhpcyB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG9yIHJlZnV0ZSBteSBzdXNwaWNpb24uIEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgZGV2aWNlIHRyZWUgYmluZGluZ3Mgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgU1RNTUFDX0VUSGAgZHJpdmVyLiBBcmUgdGhlcmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIGZsYWdzIHRoYXQgdHJpZ2dlciB0aGUgdXNlIG9mIGEgYFBBR0VfUE9PTGAgd2l0aCB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGNvbnRyb2xsZXI/IEknbGwgYWxzbyB3YW50IHRvIHJldmlldyB0aGUgZHJpdmVyJ3MgY29kZSBpdHNlbGYgdG8gc2VlIGhvdyBpdCBhbGxvY2F0ZXMgYW5kIG1hbmFnZXMgaXRzIG1lbW9yeS4gSWYgaXQncyBpbmRlZWQgaW50ZXJhY3Rpbmcgd2l0aCBhIGBQQUdFX1BPT0xgLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0IGNob2ljZSwgYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggYmVzdCBwcmFjdGljZXMgZm9yIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZS4gQW55IHJlbGF0ZWQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFyZSBhbHNvIG9mIGludGVyZXN0LiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGRyaXZlciwgaW4gdGhpcyBzdWJzeXN0ZW0sIHRoYXQgaXMgcmVxdWVzdGluZyBhIHBhZ2UgcG9vbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3NTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozNC4yNjA5MjMxMDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNTQ0ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MzQuMzMyNDc2MTc1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTI1OTcwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBUYXJnZXQgZm9yIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGNvbmZpcm1pbmcsIHllcywgdGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxldmFudCB0byB0aGlzIGFyZWE6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYERXTUFDX0lOVEVMYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHNwZWNpZmljIHN5bWJvbHMuXG5cbk15IGluaXRpYWwgbGlzdCBvZiBzeW1ib2xzIHRvIGZvY3VzIG9uIGluY2x1ZGVkOiBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AsIGBmcmVlX2RtYV9kZXNjX3Jlc291cmNlc2AsIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIGBzdG1tYWNfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBgX19mcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQuIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAgYW5kIGBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc2AgYm90aCBjYWxsIGl0LiBBbmQgdGhlbiBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGNhbGxzIGBzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZWAsIHdoaWNoIGluIHR1cm4sIGFzIGRpc2N1c3NlZCwgY2FsbHMgdGhlIG1haW4gZnVuY3Rpb24sIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRmluYWxseSwgYHN0bW1hY19yZWxlYXNlYCBjYWxscyBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLlxuXG5TbywgdG8gYmUgbW9yZSBwcmVjaXNlLCB0aGUgcmVmaW5lZCBzZXQgb2YgZm9jdXMgc3ltYm9scyBpczogYF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgc3RtbWFjX2Rpc2FibGVfcnhfcXVldWVgLCBgZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNgLCBgZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC4gTm93IGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHRoZSBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjU5LjI1ODQ1MTE2OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNTc5MDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk9c3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6NTg6c3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy05OC1cXHRyZXR1cm4gcG9vbCA/IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2wocHJpdiwgcG9vbCwgcXVldWUpIDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6OTk6XFx0XFx0ICAgICAgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2wocHJpdiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMDAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMTowMC45OTQyNDg1MjdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjAwODc1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBuYXN0eSBwb3RlbnRpYWwgYnVnIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgWERQIHBvb2wgc2V0dXAuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgc3RtbWFjX3hkcF9zZXR1cF9wb29sYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgaW52b2tlZCB3aGVuIHRoZSBYRFAgcG9vbCBpcyBpbml0aWFsaXplZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIEFGX1hEUC5cblxuVGhlIGNydXggb2YgdGhlIGZpeCBsaWVzIGluIGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYC4gRXNzZW50aWFsbHksIHRoZXJlJ3MgYSBwcm9ibGVtIHdoZXJlIHRoZSBgcnhfcS1cdTAwM2VwYWdlX3Bvb2xgIGlzbid0IGJlaW5nIHNldCB0byBgTlVMTGAgYWZ0ZXIgdGhlIHBvb2wgaXMgZGVzdHJveWVkLiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uLCBwYXJ0aWN1bGFybHkgaWYgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBhZ2FpbiBhZnRlciB0aGUgcG9vbCBpcyBhbHJlYWR5IGdvbmUuIE5vdCBpZGVhbCwgYW5kIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHdhbnQgdG8gZ2V0IHJpZ2h0LlxuXG5HaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSwgdGhlIGltcGFjdCBjb3VsZCBiZSBzaWduaWZpY2FudC4gQSB2dWxuZXJhYmlsaXR5IGxpa2UgdGhpcyB3b3VsZCBiZSB2ZXJ5IGludGVyZXN0aW5nIHRvIGZ1enouXG5cblRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBcIldvcnRoRnV6emluZ1wiIGFuZCBlbmFibGUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBmb3IgbXkgdGVzdGluZzogXCJTVE1NQUNfRVRIXCIsIFwiU1RNTUFDX1BDSVwiLCBhbmQgXCJEV01BQ19JTlRFTFwiLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gRE1BIHJlc291cmNlIGZyZWVpbmc6IGBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzYCwgYGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzYCwgYHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNob3QgYXQgZXhwb3NpbmcgdGhlIHVuZGVybHlpbmcgdnVsbmVyYWJpbGl0eSwgb3IgY29uZmlybWluZyB0aGUgZml4LiBNeSByZWFzb25pbmcgZm9yIHRoaXMgaXMgY2xlYXI6IHdlIGhhdmUgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgYSBwYWdlIHBvb2wgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTIzNywiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDE6MzIuMzE0MzQxOTgzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMjE3NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcImZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwic3RtbWFjX2Rpc2FibGVfcnhfcXVldWVcIixcbiAgICBcInN0bW1hY194ZHBfZGlzYWJsZV9wb29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb2YgcGFnZV9wb29sIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJ5IHNldHRpbmcgdGhlIHBvaW50ZXIgdG8gTlVMTCBhZnRlciBkZXN0cnVjdGlvbi4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzXCIsXG4gICAgXCJmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlc1wiLFxuICAgIFwiZnJlZV9kbWFfZGVzY19yZXNvdXJjZXNcIixcbiAgICBcInN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlXCIsXG4gICAgXCJzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRvdWJsZS1mcmVlIG9mIHBhZ2VfcG9vbCBpbiB0aGUgc3RtbWFjIGRyaXZlciBieSBzZXR0aW5nIHRoZSBwb2ludGVyIHRvIE5VTEwgYWZ0ZXIgZGVzdHJ1Y3Rpb24uIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow75rcr[1] Phase: Succeeded StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 15:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 15:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2] Phase: Succeeded StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 15:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 15:02:35 +0000 UTC FinishedAt: 2026-06-30 15:02:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow75rcr/series-workflow75rcr-convert-artifact-1872025044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 15:02:46 +0000 UTC FinishedAt: 2026-06-30 15:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 15:02:46 +0000 UTC FinishedAt: 2026-06-30 15:30:07 +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:*df054cb3-5db8-4eb5-a248-2f85b31ff51f,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-workflow75rcr/series-workflow75rcr-convert-artifact-1872025044/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": "52f8bbdd-66bf-4f0c-9e7b-b488f72d39ea", "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-workflow75rcr/series-workflow75rcr-build-action-4024242514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 15:02:46 +0000 UTC FinishedAt: 2026-06-30 15:29:57 +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:*df054cb3-5db8-4eb5-a248-2f85b31ff51f,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-workflow75rcr/series-workflow75rcr-convert-artifact-1872025044/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": "52f8bbdd-66bf-4f0c-9e7b-b488f72d39ea", "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-workflow75rcr/series-workflow75rcr-build-action-4024242514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 15:30:07 +0000 UTC FinishedAt: 2026-06-30 15:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 15:30:07 +0000 UTC FinishedAt: 2026-06-30 15:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 15:30:07 +0000 UTC FinishedAt: 2026-06-30 15:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 15:30:07 +0000 UTC FinishedAt: 2026-06-30 15:30:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow75rcr/series-workflow75rcr-convert-artifact-2660202387/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 15:30:17 +0000 UTC FinishedAt: 2026-06-30 15:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 15:30:17 +0000 UTC FinishedAt: 2026-06-30 15:32:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52f8bbdd-66bf-4f0c-9e7b-b488f72d39ea,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-workflow75rcr/series-workflow75rcr-build-action-4024242514/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-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 15:32:17 +0000 UTC FinishedAt: 2026-06-30 15:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 15:32:17 +0000 UTC FinishedAt: 2026-06-30 15:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 15:32:17 +0000 UTC FinishedAt: 2026-06-30 15:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 15:32:17 +0000 UTC FinishedAt: 2026-06-30 15:57: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:*df054cb3-5db8-4eb5-a248-2f85b31ff51f,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-workflow75rcr/series-workflow75rcr-convert-artifact-2660202387/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": "0b395e5e-4c91-4976-bd17-bddc9e321f10", "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-workflow75rcr/series-workflow75rcr-build-action-2020494791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 15:32:17 +0000 UTC FinishedAt: 2026-06-30 15:57: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:*df054cb3-5db8-4eb5-a248-2f85b31ff51f,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-workflow75rcr/series-workflow75rcr-convert-artifact-2660202387/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": "0b395e5e-4c91-4976-bd17-bddc9e321f10", "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-workflow75rcr/series-workflow75rcr-build-action-2020494791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 15:57:55 +0000 UTC FinishedAt: 2026-06-30 15:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 15:57:55 +0000 UTC FinishedAt: 2026-06-30 15:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 15:57:55 +0000 UTC FinishedAt: 2026-06-30 16:00:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 15:57:55 +0000 UTC FinishedAt: 2026-06-30 16:00:04 +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:*0b395e5e-4c91-4976-bd17-bddc9e321f10,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-workflow75rcr/series-workflow75rcr-build-action-2020494791/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-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +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":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"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:*52f8bbdd-66bf-4f0c-9e7b-b488f72d39ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0b395e5e-4c91-4976-bd17-bddc9e321f10,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-workflow75rcr/series-workflow75rcr-build-action-4024242514/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-workflow75rcr/series-workflow75rcr-build-action-2020494791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:00:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:00:37 +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":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"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-workflow75rcr/series-workflow75rcr-convert-artifact-2309284364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:00:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:00:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 16:00:14 +0000 UTC FinishedAt: 2026-06-30 16:00:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 16:00:49 +0000 UTC FinishedAt: 2026-06-30 16:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow75rcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__free_dma_rx_desc_resources","free_dma_rx_desc_resources","free_dma_desc_resources","stmmac_disable_rx_queue","stmmac_xdp_disable_pool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","DWMAC_INTEL"],"series_id":"fdc340b7-a848-4f2c-bf2c-046f4f491631","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 16:00:49 +0000 UTC FinishedAt: 2026-06-30 16:04:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52f8bbdd-66bf-4f0c-9e7b-b488f72d39ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0b395e5e-4c91-4976-bd17-bddc9e321f10,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-workflow75rcr/series-workflow75rcr-build-action-4024242514/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-workflow75rcr/series-workflow75rcr-build-action-2020494791/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-workflow75rcr/series-workflow75rcr-convert-artifact-2309284364/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,}