Name: series-workflowspkh8 Phase: Succeeded StartedAt: 2026-07-18 15:40:25 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[0] Phase: Succeeded StartedAt: 2026-07-18 15:40:25 +0000 UTC FinishedAt: 2026-07-18 16:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[0].run-triage Phase: Succeeded StartedAt: 2026-07-18 15:40:25 +0000 UTC FinishedAt: 2026-07-18 16:26:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "b014dfa9-c572-4937-9dd0-7e39e6ef2b99" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dwmac4_dma_deinit_channel", "dwmac410_dma_deinit_channel", "stmmac_stop_all_dma" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7ZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdG9wX2FsbF9kbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU0MzRkOWI3ODIzZDYyYjE2ZWQxNTg2ZTU3OGI1N2I1YTczYWFlMzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAxNjoyNDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcbmluZGV4IDgyOWEyM2JkYWQwMWY4Li4yM2ZmZTFhZGNkMGQzNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jXG5AQCAtMTA2LDYgJiM0MzsxMDYsMTcgQEAgc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ICAgICAgIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vkd21hYzRfYWRkcnM7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcbiYjNDM7XHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiYjNDM7XHR2YWx1ZSBcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTSztcbiYjNDM7XHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbilcbkBAIC0xMjUsNiAmIzQzOzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdCAgICAgICBpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdFx0dm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGR3bWFjNF9hZGRycyAqZHdtYWM0X2FkZHJzID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWR3bWFjNF9hZGRycztcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1xuJiM0MztcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuJiM0MztcdHZhbHVlIFx1MDAyNj0gfkRNQV9DSEFOX0lOVFJfREVGQVVMVF9NQVNLXzRfMTA7XG4mIzQzO1x0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0KHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXG4ge1xuQEAgLTU0OCw2ICYjNDM7NTcwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNF9kbWFfb3BzID0ge1xuIFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHdtYWM0X2RtYV9pbml0LFxuIFx0LmluaXRfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9jaGFubmVsLFxuJiM0MztcdC5kZWluaXRfY2hhbiA9IGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwsXG4gXHQuaW5pdF9yeF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3J4X2NoYW4sXG4gXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXG4gXHQuYXhpID0gZHdtYWM0X2RtYV9heGksXG5AQCAtNTc3LDYgJiM0Mzs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0MTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3bWFjNF9kbWFfcmVzZXQsXG4gXHQuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCxcbiBcdC5pbml0X2NoYW4gPSBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsLFxuJiM0MztcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2Q0Li4wNGRhZmVjMDIxYjRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMTcwLDYgJiM0MzsxNzAsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0dm9pZCAoKmluaXQpKHZvaWQgX19pb21lbSAqaW9hZGRyLCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpO1xuIFx0dm9pZCAoKmluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pO1xuJiM0MztcdHZvaWQgKCpkZWluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgIHUzMiBjaGFuKTtcbiBcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsXG4gXHRcdFx0ICAgICBkbWFfYWRkcl90IHBoeSwgdTMyIGNoYW4pO1xuQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBpbml0LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX2RlaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuJiM0MztcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9yeF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfcnhfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2MCw2ICYjNDM7MjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4gXHR1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuJiM0MztcdHU4IGRtYV9jc3JfY2ggPSBtYXgocnhfY2hhbm5lbHNfY291bnQsIHR4X2NoYW5uZWxzX2NvdW50KTtcbiBcdHU4IGNoYW47XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG5AQCAtMjU2Nyw2ICYjNDM7MjU2OCw5IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuIFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4mIzQzO1xuJiM0MztcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7c3RtbWFjX3N0b3BfYWxsX2RtYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBETUEgY2hhbm5lbCBkZWluaXRpYWxpemF0aW9uIGxvZ2ljIHRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIERXTUFDNC80LjEwIGNvcmVzLiBUaGlzIGxvZ2ljIGlzIGludm9rZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIHN0b3BwZWQgb3Igc3VzcGVuZGVkLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSBpbnRlcmZhY2UgKGUuZy4sIEdNQUM1KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGludGVyZmFjZSB0ZWFyZG93biBhbmQgc3VzcGVuZCBwYXRocyB0byBlbnN1cmUgdGhlIG5ldyBETUEgZGVpbml0IGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNDM0ZDliNzgyM2Q2MmIxNmVkMTU4NmU1NzhiNTdiNWE3M2FhZTMxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMTY6MjQ6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMKaW5kZXggODI5YTIzYmRhZDAxZjguLjIzZmZlMWFkY2QwZDM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jCkBAIC0xMDYsNiAmIzQzOzEwNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJICAgICAgIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LSZndDtwbGF0LSZndDtkd21hYzRfYWRkcnM7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsKJiM0MzsJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7CiYjNDM7CXZhbHVlICZhbXA7PSB+RE1BX0NIQU5fSU5UUl9ERUZBVUxUX01BU0s7CiYjNDM7CXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCSAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLAogCQkJCSAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pCkBAIC0xMjUsNiAmIzQzOzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkgICAgICAgaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJCXZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtJmd0O3BsYXQtJmd0O2R3bWFjNF9hZGRyczsKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwomIzQzOwl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKJiM0MzsJdmFsdWUgJmFtcDs9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTS180XzEwOwomIzQzOwl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKQogewpAQCAtNTQ4LDYgJiM0Mzs1NzAsNyBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0X2RtYV9vcHMgPSB7CiAJLnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCwKIAkuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCwKIAkuaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwsCiYjNDM7CS5kZWluaXRfY2hhbiA9IGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwsCiAJLmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLAogCS5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbiwKIAkuYXhpID0gZHdtYWM0X2RtYV9heGksCkBAIC01NzcsNiAmIzQzOzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0gewogCS5yZXNldCA9IGR3bWFjNF9kbWFfcmVzZXQsCiAJLmluaXQgPSBkd21hYzRfZG1hX2luaXQsCiAJLmluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwsCiYjNDM7CS5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCwKIAkuaW5pdF9yeF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3J4X2NoYW4sCiAJLmluaXRfdHhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF90eF9jaGFuLAogCS5heGkgPSBkd21hYzRfZG1hX2F4aSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCBlNjMxN2I5NGZmZjdkNC4uMDRkYWZlYzAyMWI0ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKQEAgLTE3MCw2ICYjNDM7MTcwLDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAl2b2lkICgqaW5pdCkodm9pZCBfX2lvbWVtICppb2FkZHIsIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZyk7CiAJdm9pZCAoKmluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAkJCSAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbik7CiYjNDM7CXZvaWQgKCpkZWluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgdTMyIGNoYW4pOwogCXZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywKIAkJCSAgICAgZG1hX2FkZHJfdCBwaHksIHUzMiBjaGFuKTsKQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdCwgX19hcmdzKQogI2RlZmluZSBzdG1tYWNfaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcCiAJc3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfZGVpbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGRlaW5pdF9jaGFuLCBfX3ByaXYsIF9fYXJncykKICNkZWZpbmUgc3RtbWFjX2luaXRfcnhfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXAogCXN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBpbml0X3J4X2NoYW4sIF9fcHJpdiwgX19hcmdzKQogI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjU2MCw2ICYjNDM7MjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCXU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsKIAl1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7CiYjNDM7CXU4IGRtYV9jc3JfY2ggPSBtYXgocnhfY2hhbm5lbHNfY291bnQsIHR4X2NoYW5uZWxzX2NvdW50KTsKIAl1OCBjaGFuOwogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKQEAgLTI1NjcsNiAmIzQzOzI1NjgsOSBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiAJCXN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTsKJiM0MzsKJiM0MzsJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IGRtYV9jc3JfY2g7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJc3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbik7CiB9CiAKIC8qKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgRE1BIERlLWluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCYjMzk7cyB0b3VjaGluZyBgZHdtYWM0X2RtYS5jYCwgYGh3aWYuaGAsIGFuZCBgc3RtbWFjX21haW4uY2Agd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQgYWRkcyBhIGBkZWluaXRfY2hhbmAgY2FsbGJhY2sgdG8gdGhlIGBzdG1tYWNfZG1hX29wc2Agc3RydWN0IGFuZCBpbXBsZW1lbnRzIGl0IGZvciBgZHdtYWM0YCBhbmQgYGR3bWFjNDEwYCBETUEgb3BlcmF0aW9ucy4gVGhlIHBhdGNoIGFsc28gZW5zdXJlcyB0aGlzIGNhbGxiYWNrIGdldHMgY2FsbGVkIGR1cmluZyBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCmBzdG1tYWNgIGlzLCBhcyBJIHJlY2FsbCwgdGhlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgMTAvMTAwLzEwMDAgRXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSAmIzM0O0VRT1MmIzM0OyBvbmVzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBRRU1VIChvciBhbnkgcmVhZGlseSBhdmFpbGFibGUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm0pIGVtdWxhdGUgdGhpcyBoYXJkd2FyZT8KCkxldCYjMzk7cyBzZWXigKYgUUVNVSBoYXMgZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGEgbG90IG9mIG5ldHdvcmsgaW50ZXJmYWNlcywgaW5jbHVkaW5nIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYGZ0Z21hYzEwMGAsIGBsYW45MTE4YCwgYHNtYzkxYzExMWAsIGBzdGVsbGFyaXNfZW5ldGAsIGFuZCBgeGdtYWNgLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBuZWNlc3NhcmlseSBtZWFuIGl0IHN1cHBvcnRzICp0aGlzKiBvbmUuIFdhaXQgYSBtaW51dGUuLi4gYHN0bW1hY2AgaXNuJiMzOTt0IFNUTWljcm9lbGVjdHJvbmljcyBzcGVjaWZpYywgaXQmIzM5O3MgYWN0dWFsbHkgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKS4gQWhhIQoKU28sIGRvZXMgUUVNVSBlbXVsYXRlIERXTUFDPyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlcywgc2VhcmNoaW5nIGZvciBQQ0kgSURzIG9yIHBsYXRmb3JtIGRyaXZlcnMgYXNzb2NpYXRlZCB3aXRoIGBzdG1tYWNgIHRvIGZpbmQgaXQgaW4gdGhlIFFFTVUgc291cmNlIGNvZGUuIFJlbWVtYmVyIHRoYXQgYHN0bW1hY2AgaXMgdXN1YWxseSBmb3VuZCBpbiBBUk0tYmFzZWQgU29DcyBsaWtlIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIGFuZCBzdWNoLCBhbmQgSSBiZXQgc29tZSBvZiB0aG9zZSBwbGF0Zm9ybXMgYXJlIGVtdWxhdGVkLgoKQWxyaWdodCwgUUVNVSBlbXVsYXRlcyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgLCB3aGljaCBpcyBmb3IgdGhlIEFsbHdpbm5lciBIMy4gSXMgdGhhdCB1c2luZyBgc3RtbWFjYD8gTm8sIGl0IGxvb2tzIGxpa2UgYHN1bjhpLWVtYWNgIGlzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBgc3RtbWFjYCBkcml2ZXIgKmlzKiB1c2VkIGJ5IGEgJiMzNDtkd21hYy1zdW44aSYjMzQ7LiBPaCEgVGhhdCYjMzk7cyBpdCEgYGR3bWFjLXN1bjhpYCBsb29rcyBsaWtlIGEgZnJvbnRlbmQgZm9yIGBzdG1tYWNgLiBOb3csIHRoYXQmIzM5O3MgdXNlZnVsLgoKU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIHBsYXRmb3JtIHRoYXQgdXNlcyBgc3RtbWFjYD8KClllcyEgRXVyZWthISBRRU1VICpkb2VzKiBlbXVsYXRlIGBody9uZXQvZGVzaWdud2FyZS5jYCEgTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYGRlc2lnbndhcmUuY2AgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgKmlzKiB0aGUgYHN0bW1hY2AgaGFyZHdhcmUsIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBjYWxsZWQgYHN0bW1hY2AuCgpJbiB0aGUga2VybmVsLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYCB3aWxsIGhhdmUgdGhlIFBDSSBJRHMsIHNvIEkmIzM5O2xsIGNvcnJlbGF0ZSB0aG9zZSB0byBiZSBzdXJlLCBidXQgaXQgbG9va3MgcHJvbWlzaW5nLiBXaXRoIGEgYml0IG9mIGx1Y2ssIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIHRlc3RhYmxlIGluIFFFTVUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0RXTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGZvciBQQ0kgSURzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgUENJIElEcyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBzaXR1YXRpb24sIHNvIEkmIzM5O20gZ29pbmcgdG8gaGVhZCBzdHJhaWdodCBpbnRvIHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiB0aGVyZSBhbmQgaG93IHRoZSBkcml2ZXIgaXMgaGFuZGxpbmcgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBJRCB0YWJsZXMg4oCTIHZlbmRvciBJRHMsIGRldmljZSBJRHMsIHN1YnN5c3RlbSBJRHMsIGFuZCBzdWJzeXN0ZW0gdmVuZG9yIElEcyDigJMgdGhhdCB0aGUgZHJpdmVyIHVzZXMgdG8gcmVjb2duaXplIHRoZSBoYXJkd2FyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucyB0aGF0IGJpbmQgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBzaWxpY29uLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQgYW5kIGNvbW1lbnRlZDsgdGhhdCBhbHdheXMgbWFrZXMgdGhpbmdzIGVhc2llci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUUVNVSBOZXR3b3JrIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIFFFTVUgc2l0dWF0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgYGh3L25ldC9kZXNpZ253YXJlLmNgICptaWdodCogYmUgaW1wbGVtZW50ZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2UuIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCYjMzk7cyBzZWUuLi4gY2FuIHdlIGV2ZW4gZnV6eiBgc3RtbWFjYD8gSSYjMzk7ZCBleHBlY3QgU3l6a2FsbGVyIHRvIGhhdmUgY292ZXJhZ2UgZm9yIHNvbWV0aGluZyBsaWtlIHRoYXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgZG9lcyBTeXprYWxsZXIgaGF2ZSBhbnkgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3RtbWFjYD8gSG1tLCBpdCYjMzk7cyBub3QgYSBnaXZlbi4gU3l6a2FsbGVyIHVzdWFsbHkgaGFuZGxlcyBuZXR3b3JrIGRldmljZSBmdXp6aW5nIHdpdGggYHR1bi90YXBgIG9yIGBuZXRsaW5rYCwgYnV0IGRpcmVjdCBoYXJkd2FyZSBkcml2ZXIgZnV6emluZyByZWFsbHkgb25seSBoYXBwZW5zIGZvciBQQ0ksIFVTQiBkZXZpY2VzLCBvciBpZiB0aGVyZSBhcmUgZXhwbGljaXQgU3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgaXQuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kISBgc3RtbWFjYCAqaXMqIGEgUENJIGRldmljZSwgaXNuJiMzOTt0IGl0PyAoMHgxMTA4LCAweDcxMDIsIEkgcmVjYWxsIHNlZWluZyB0aG9zZSB2ZW5kb3IvZGV2aWNlIElEcyBiZWZvcmUpLiBPa2F5LCB0aGF0JiMzOTtzIHByb21pc2luZyEgU3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgb3Igc2ltaWxhciBQQ0ktc3BlY2lmaWMgc3lzY2FsbHMuIFRoYXQmIzM5O3MgYSBnb29kIGxlYWQuCgpOb3csIGxldCYjMzk7cyBjb25uZWN0IHRoZSBkb3RzLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0LCBpcyBpdCBmb3IgYGR3bWFjNF9kbWEuY2A/IFRoYXQmIzM5O3MgdGhlIGtleS4gRG9lcyBgZHdtYWM0YCBnZXQgdXNlZCBpbiBhIFBDSSBjb250ZXh0PyBJJiMzOTtsbCBuZWVkIHRvIGdvIGxvb2sgYXQgYHN0bW1hY19wY2kuY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBsaW5rIHRvIHRoYXQgYGR3bWFjNGAgY29kZS4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY3J1Y2lhbCBjbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWM0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBzdG1tYWNgIGRyaXZlciBpcyB1c2luZyBQQ0kuIFRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGxpa2VseSB0aGUgY29yZSBQQ0kgZHJpdmVyIGZpbGUsIHdoaWNoLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgcHJvYmFibHkgYHN0bW1hY19wY2kuY2AuIE15IGluc3RpbmN0IGlzIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIElEIG1hdGNoaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnkgYW5kIGludGVycnVwdCBsaW5lcywgdXN1YWxseSksIGFueSBzcGVjaWZpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3MsIGFuZCBvZiBjb3Vyc2UsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBtYW5hZ2VzIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIGJhc2VkIG9uIHRoZSBQQ0kgaW5mb3JtYXRpb24gaXQgZmluZHMuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBtYXAgb3V0IHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIGhhbmRsaW5nIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJiMzOTtzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhc3N1bWluZyBpdCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBQQ0kgZHJpdmVyIG1vZGVsLCBidXQgdmVyaWZ5aW5nIHRob3NlIGFzc3VtcHRpb25zIGVhcmx5IG9uIHdpbGwgc2F2ZSB0aW1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEdNQUM1IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc25wc19nbWFjNV9wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgdGhlIG5hbWUgcHJldHR5IGNsZWFybHkgcGVncyBpdCB0byB0aGUgR01BQzUgY29udHJvbGxlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgR01BQzXigKYgbm93LCBkb2VzbiYjMzk7dCB0aGF0IHV0aWxpemUgdGhlIGBkd21hYzRgIGNvcmU/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbm5lY3Rpb24uCgpTaW5jZSBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGVmYXVsdCBzZXR0aW5ncywgSSBzaG91bGQgY2hlY2sgdGhlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc3RydWN0dXJlLiBUaGF0IGxpa2VseSBjb250YWlucyB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcy4gTGV0IG1lIGRlbHZlIGludG8gdGhhdCBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCB3aWxsIGNvbmZpcm0gb3IgZGVueSBteSBzdXNwaWNpb24gdGhhdCBHTUFDNSBpcyBhbiBpbnN0YW5jZSBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIDQgY29yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c25wc19nbWFjNV9kZWZhdWx0X2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTQ6c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01NS1cdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAzOlx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA0LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIEZpbGUqKgoKQWxyaWdodCwgdGhlIGRpcmVjdGl2ZSBpcyBjbGVhci4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4uIFRoZSBpbW1lZGlhdGUgY3VlIGlzIHRvIGV4YW1pbmUgdGhlIGZpbGUgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gLSAmIzM0O3NucHMmIzM0OyBzdWdnZXN0cyBTaW5nbGUgTnVjbGVvdGlkZSBQb2x5bW9ycGhpc21zIGRhdGEsICYjMzQ7Z21hYzUmIzM0OyBwcm9iYWJseSBkZW5vdGVzIGEgc3BlY2lmaWMgZXhwZXJpbWVudCwgbWV0aG9kb2xvZ3ksIG9yIHZlcnNpb24sIGFuZCAmIzM0O2RlZmF1bHRfZGF0YSYjMzQ7IGxpa2VseSBpbmRpY2F0ZXMgZWl0aGVyIHRoZSByYXdlc3QgZm9ybSBvciBhIGN1cmF0ZWQgYmFzZWxpbmUgZGF0YXNldC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgZmlsZSBmb3JtYXQgLSBpcyBpdCBhIFZDRiwgYSBwbGFpbiB0ZXh0IHRhYmxlLCBhIGJpbmFyeSBmb3JtYXQ/IFRoZSAmIzM5O2RlZmF1bHQmIzM5OyBwYXJ0IGltcGxpZXMgYSBzdGFydGluZyBwb2ludCwgc28gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHByZXByb2Nlc3Npbmcgc3RlcHMgdGhhdCBoYXZlIGxpa2VseSBiZWVuIGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGZvdW5kYXRpb25hbCBmb3IgYW55IGRvd25zdHJlYW0gYW5hbHlzaXMuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG1ldGFkYXRhLCB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgYXNzb2NpYXRlZCB3aXRoIGl0LiBGcm9tIHRoZSBuYW1lIGFsb25lLCBJIGNhbiBzdGFydCBmb3JtaW5nIGh5cG90aGVzZXMgYWJvdXQgdGhlIGFuYWx5dGljYWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU0Olx0c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgNTU6XHRcdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiAgNTY6XHR7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG4gIDYwOlx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG4gIDYxOlx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgNjI6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuICA2MzpcdFx0cGxhdC1cdTAwM2VwbXQgPSB0cnVlO1xuICA2NDpcdFxuICA2NTpcdFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXG4gIDY2Olx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2UgPSA0O1xuICA2NzpcdFx0cGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcbiAgNjg6XHRcbiAgNjk6XHRcdHBsYXQtXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XG4gIDcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7XG4gIDcxOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDcyOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcbiAgNzM6XHRcdFx0aWYgKGkgXHUwMDNlIDApXG4gIDc0Olx0XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XG4gIDc1Olx0XHR9XG4gIDc2Olx0XG4gIDc3Olx0XHRwbGF0LVx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XG4gIDc4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KVxuICA3OTpcdFx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xuICA4MDpcdFxuICA4MTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA4MjpcdFx0cGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4gIDgzOlx0XG4gIDg0Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJsID0gMzI7XG4gIDg1Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJseDggPSB0cnVlO1xuICA4NjpcdFxuICA4NzpcdFx0LyogQXhpIENvbmZpZ3VyYXRpb24gKi9cbiAgODg6XHRcdHBsYXQtXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBsYXQtXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XG4gIDg5Olx0XHRpZiAoIXBsYXQtXHUwMDNlYXhpKVxuICA5MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgOTE6XHRcbiAgOTI6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XG4gIDkzOlx0XHRwbGF0LVx1MDAzZWF4aS1cdTAwM2VheGlfcmRfb3NyX2xtdCA9IDMxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzgzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFN5emthbGxlciBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSBzZWUgdGhlIGFzc2lnbm1lbnQ6IGBwbGF0LSZndDtjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O2AuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgZHdtYWM0YC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQmIzM5O3MgdGhlIFBDSSBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEFuZCBJIHJlY2FsbCB0aGF0IGZpbGUgYmVpbmcgY29tcGlsZWQgdW5kZXIgYENPTkZJR19TVE1NQUNfUENJYC4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiAqY2FuKiBzeXprYWxsZXIgZnV6eiB0aGlzPyBXZWxsLCBzeXprYWxsZXIgKmRvZXMqIGZ1enogUENJIGRldmljZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IGluIGZhdm9yLiBCdXQgZG9lcyBpdCBmdXp6ICpzcGVjaWZpY2FsbHkqIHRoZSBgc3RtbWFjYCBkcml2ZXI/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVpdGhlciBgQ09ORklHX1NUTU1BQ19FVEhgIChmb3IgdGhlIEV0aGVybmV0IGRyaXZlciBpbiBnZW5lcmFsKSBvciBgQ09ORklHX1NUTU1BQ19QQ0lgIHNwZWNpZmljYWxseS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgdGhlIGRlYWwgaXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4gIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MzAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipQcmlvcml0aXppbmcgU2VjdXJpdHk6IEluaXRpYXRpbmcgUENJIENvbXBsaWFuY2UgUmV2aWV3KioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0aGUgcmlnaHQgcGF0aC4gR2l2ZW4gdGhlIHNlbnNpdGl2ZSBuYXR1cmUgb2YgdGhlIHByb2plY3QgYW5kIHRoZSBkYXRhIGludm9sdmVkLCBJIG5lZWQgdG8gbWFrZSBQQ0kgY29tcGxpYW5jZSB0aGUgdmVyeSBmaXJzdCBzdG9wIG9uIHRoZSBjaGVja2xpc3QuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNhcmRob2xkZXIgZGF0YSBpbiBhbnkgd2F5LCBzaGFwZSwgb3IgZm9ybSwgUENJIGlzIGdvaW5nIHRvIGJlIGEgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1pbmQgb24gdGhlIHNjb3BlLCBhbmQgdGhhdCB3aWxsIHNldCB0aGUgZ3JvdW5kd29yayBmb3IgYWxsIGZ1dHVyZSBkZXNpZ24gYW5kIGRldmVsb3BtZW50IGNob2ljZXMuIFNvLCBsZXTigJlzIGJlZ2luIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBQQ0kgcmV2aWV3IHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxhbmRzY2FwZSBhaGVhZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5ODgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBDb25maWd1cmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhdCBwbGF5IGhlcmUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgdGhlIGtleSBmbGFncyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhvc2Ugc2V0dGluZ3MgYWN0dWFsbHkgaW5mbHVlbmNlIHRoZSBidWlsZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBgZHdtYWM0X2RtYS5jYCBmaWxlIGlzIGdldHRpbmcgY29tcGlsZWQgd2hlbiB0aGUgYFNUTU1BQ19FVEhgIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIHRoYXQgSSBuZWVkIHRvIGFuc3dlci4gSSBzdXNwZWN0IHRoZSBhbnN3ZXIgaXMgcmVsYXRlZCB0byBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzb21lIG90aGVyIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd21hYzRfZG1hLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zPXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNi1cdCAgICAgIG1tY19jb3JlLm8gc3RtbWFjX2h3dHN0YW1wLm8gc3RtbWFjX3B0cC5vIGR3bWFjNF9kZXNjcy5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NzpcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTgtXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNsZWFybHkgYmVsb25ncyB3aXRoaW4gdGhlIGBzdG1tYWMtb2Jqc2AgY29udGV4dDsgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBkZWluaXRfY2hhbmAgZnVuY3Rpb24gdG8gdGhlIGBkd21hYzRfZG1hX29wc2AgYW5kIGBkd21hYzQxMF9kbWFfb3BzYCBzdHJ1Y3R1cmVzLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgaW5kaWNhdG9yLgoKTm93LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBtb2RpZnlpbmcgdGhlIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYHN0bW1hY19zdG9wX2FsbF9kbWFgIG5vdyBjYWxscyB0aGlzIG5ld2x5IGFkZGVkIGBzdG1tYWNfZGVpbml0X2NoYW5gIGZ1bmN0aW9uLiBXaGljaCB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBtb3JlIHRob3JvdWdobHkgc2h1dHRpbmcgZG93biBhIGNoYW5uZWwuCgpCdXQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24gaXMgZXZlbiBhY3RpdmVseSB1c2VkIGluIHRoZSBjb2RlLiBJIG11c3QgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBmdW5jdGlvbiBjcml0aWNhbCwgdXNlZCBvbmx5IGluIHJhcmUgY2FzZXMsIG9yIHBvdGVudGlhbGx5IGRlYWQgY29kZT8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc3RvcF9hbGxfZG1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjU0MD1zdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNTU0OiAqIHN0bW1hY19zdG9wX2FsbF9kbWEgLSBzdG9wIGFsbCBSWCBhbmQgVFggRE1BIGNoYW5uZWxzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTUtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1OTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjQyPXN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjAtXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyNjE6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwMT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzExOC1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMTk6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTIwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODE4MT1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNC1cdC8qIFN0b3AgVFgvUlggRE1BICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyMDU6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY2NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IGl0LiBUaGlzIHBhdGNoIGxvb2tzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdG91Y2hlcyBzb21lIGtleSBjbGVhbnVwIGZ1bmN0aW9uczogYGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxgLCBgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsYCwgYW5kIGBzdG1tYWNfc3RvcF9hbGxfZG1hYC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgaW50ZXJydXB0IGhhbmRsaW5nIGR1cmluZyBpbnRlcmZhY2Ugc2h1dGRvd24gYW5kIHN1c3BlbmQsIHNvIGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggY29udHJvbCBwYXRoIG9wZXJhdGlvbnMgcmF0aGVyIHRoYW4gaGlnaC1mcmVxdWVuY3kgZGF0YSBwYXRocy4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGVkIGR1cmluZyBpbnRlcmZhY2UgYnJpbmctdXAgYW5kIGJyaW5nLWRvd24gLSB2ZXJ5IGNvbW1vbiBvcGVyYXRpb25zIGZvciBmdXp6aW5nLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aGluIGBfX3N0bW1hY19yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBuZG9fc3RvcGApLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGR1cmluZyBzdXNwZW5kLCBtYWtpbmcgdGhlbSBlYXNpbHkgcmVhY2hhYmxlLiBTaW5jZSBgc3RtbWFjYCBzdXBwb3J0cyBQQ0ksIEkgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBgc3l6X3BjaV92cGNpYCBjYWxsIHRvIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBhbmQgYnJpbmcgdGhlIGludGVyZmFjZSB1cCBhbmQgZG93biByZXBlYXRlZGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBzeXprYWxsZXIgZnV6emluZyB0ZWNobmlxdWUuIEFkZGl0aW9uYWxseSwgSSBrbm93IHRoYXQgYHN0bW1hY2AgaXMgYSBuZXR3b3JrIGRldmljZSwgYW5kIHN5emthbGxlciYjMzk7cyBjb21tb24gb3BlcmF0aW9ucyBpbmNsdWRlIGJyaW5naW5nIG5ldHdvcmsgaW50ZXJmYWNlcyB1cCBhbmQgZG93biwgc28gSSYjMzk7bGwgc2VlIGxvdHMgb2YgY292ZXJhZ2UuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJIHNlZSBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgIGFyZSBjcml0aWNhbC4gSSBjaGVja2VkIHRoZSBLY29uZmlnIGFuZCB2ZXJpZmllZCB0aGF0IGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBTVE1NQUNfRVRIYCwgc28gYm90aCBhcmUgbmVjZXNzYXJ5LiBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSB0byB0aGUgY29uZmlnLgoKVGhlIGNvcmUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIHRoZSBvbmVzIHRoZSBwYXRjaCBtb2RpZmllcywgc3BlY2lmaWNhbGx5IGBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsYCwgYGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbGAsIGFuZCBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIEkmIzM5O3ZlIHZlcmlmaWVkIHRoZWlyIGV4YWN0IG5hbWVzLCBhbmQgdGhleSYjMzk7cmUgYWxsIHJlYWNoYWJsZSB2aWEgY29udHJvbCBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIHZlcnkgYXBwcm9wcmlhdGUgZm9yIGZ1enppbmcuIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBpcyBhIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIHRhcmdldC4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBwYXRjaCYjMzk7cyBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAgaW1wbGVtZW50YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgY2xlYXJpbmcgaW50ZXJydXB0IGVuYWJsZSBtYXNrcyBmb3IgRE1BIGNoYW5uZWxzLCB3aGljaCBpcyBsaWtlbHkgZml4aW5nIGFuIGludGVycnVwdC1yZWxhdGVkIGJ1ZyBkdXJpbmcgaW50ZXJmYWNlIHNodXRkb3duIG9yIHN1c3BlbmQuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2Ugc3VnZ2VzdHMgdGhhdCBmdXp6aW5nIHRoZXNlIGludGVycnVwdC1yZWxhdGVkIG9wZXJhdGlvbnMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIG1lbW9yeSBzYWZldHkgb3Igb3RoZXIgaXNzdWVzLgoKRmluYWxseSwgd2hpbGUgSSAqY291bGQqIGFsc28gaW5jbHVkZSBgRFdNQUNfR0VORVJJQ2AgYW5kIGBTVE1NQUNfUExBVEZPUk1gIGp1c3QgaW4gY2FzZSwgSSB0aGluayBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgc3VmZmljaWVudCBiZWNhdXNlIG9mIHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggYHN5el9wbGF0Zm9ybV9kZXZpY2VgIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzLiBIb3dldmVyLCBzaW5jZSBgU1RNTUFDX1BMQVRGT1JNYCBkZWZhdWx0cyB0byB5ZXMsIEkgc2hvdWxkIGJlIGNvdmVyZWQuIEkmIzM5O20gZ29pbmcgdG8gcHJvY2VlZCB3aXRoIGZ1enppbmcgdXNpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYW5kIHNlZSBob3cgaXQgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgU1RNTUFDX1BDSSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfUENJYC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBQQ0ktYmFzZWQgU1RNaWNyb2VsZWN0cm9uaWNzIEdpZ2FiaXQgRXRoZXJuZXQgTUFDLCBzbyBhIHRob3JvdWdoIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgY3J1Y2lhbCBiZWZvcmUgYW55IG1ham9yIG1vZGlmaWNhdGlvbnMgb3IgaW50ZWdyYXRpb25zLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcHMgd2l0aDoKCiogICAqKlRoZSBQQ0kgc3Vic3lzdGVtOioqIFNwZWNpZmljYWxseSwgd2hhdCBkcml2ZXIgbW9kZWxzIGFyZSBhc3N1bWVkPyBJcyBpdCB1dGlsaXppbmcgdGhlIHN0YW5kYXJkIGBwY2lfZHJpdmVyYCBmcmFtZXdvcmssIG9yIGFyZSB0aGVyZSBjdXN0b20gaW50ZXJhY3Rpb25zPyBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGhhbmRsZXMgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIChNU0kgdnMuIGxlZ2FjeSksIGFuZCBwb3dlciBtYW5hZ2VtZW50IGhvb2tzLCBhbW9uZyBvdGhlciB0aGluZ3MuIEkgd2lsbCBiZSBsb29raW5nIGludG8gdGhlIGRldmljZSB0cmVlIG9yIEFDUEkgc2V0dXAuCiogICAqKlRoZSBTVE1NQUMgY29yZSBkcml2ZXI6KiogV2hhdCB2ZXJzaW9uIG9mIHRoZSBjb3JlIGlzIGl0IGxpbmtlZCB0bz8gQW55IHNwZWNpZmljIHBhdGNoZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFwcGxpZWQgYXQgdGhlIGNvcmUgbGV2ZWwgdGhhdCBpbXBhY3QgdGhlIFBDSSB2YXJpYW50PyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgZmVhdHVyZSBzZXQgc3VwcG9ydGVkIGJ5IHRoaXMgcGFydGljdWxhciBpbnN0YW50aWF0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIHNvIEkgY2FuIHByZWRpY3QgZWRnZSBjYXNlcy4KKiAgICoqTmV0d29ya2luZyBzdGFjayBjb21wb25lbnRzOioqIFRoZSBpbnRlZ3JhdGlvbiBwb2ludHMgd2l0aCB0aGUgYG5ldGRldmAgQVBJIGFyZSBvYnZpb3VzLCBidXQgYXJlIHRoZXJlIGFueSB1bnVzdWFsIGhvb2tzIG9yIHdvcmthcm91bmRzIG5lY2Vzc2FyeT8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcyAoY2hlY2tzdW0sIFRTTywgZXRjLikgYmVpbmcgdXRpbGl6ZWQsIGFuZCBpZiBzbywgaG93IGFyZSB0aGV5IG1hbmFnZWQgaW4gdGhlIFBDSSBjb250ZXh0PyBBcmUgdGhlcmUgYW55IGZsb3cgY29udHJvbCBvciBRb1MgZmVhdHVyZXMgZW5hYmxlZD8KKiAgICoqSGFyZHdhcmUgc3BlY2lmaWNzOioqIE9mIGNvdXJzZSwgdGhlIHNwZWNpZmljIHNpbGljb24gcmV2aXNpb24gaXMgcGFyYW1vdW50LiBBcmUgdGhlcmUga25vd24gZXJyYXRhIG9yIGhhcmR3YXJlIHF1aXJrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGBTVE1NQUNfUENJYCB2YXJpYW50PyBJIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhc2hlZXRzIGFuZCBhbnkgYXZhaWxhYmxlIGVycmF0YSBzaGVldHMuCiogICAqKk90aGVyIGRyaXZlcnM6KiogSXMgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdCBvciBkZXBlbmRlbmN5IG9uIG90aGVyIGRyaXZlcnMgb24gdGhlIHNhbWUgUENJIGJ1cz8gT3IgYW55IG90aGVyIGRldmljZXMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBjb250cm9sbGVyPwoKVWx0aW1hdGVseSwgbXkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIHBvcnRhYmlsaXR5LCBtYWludGFpbmFiaWxpdHksIGFuZCBmdXR1cmUgdXBkYXRlcy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBzZXQgbWUgdXAgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgYW55IHRhc2tzIHJlbGF0ZWQgdG8gYFNUTU1BQ19QQ0lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgU1RNTUFDX1BDSWAgb3B0aW9uIHdhcyBjb250aW5nZW50IG9uIGBTVE1NQUNfRVRIYC4gQnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSB0aGUgY2FzZSwgYW5kIEkga25vdyB0aGVzZSBkcml2ZXJzIGluc2lkZSBhbmQgb3V0LiBBaCwgcmlnaHQuIEl0JiMzOTtzIGNsZXZlcmx5IHR1Y2tlZCAqd2l0aGluKiBhbiBgaWYgU1RNTUFDX0VUSGAgYmxvY2suIFRoaXMgbWVhbnMgdGhlIGRlcGVuZGVuY3kgaXMgaGFuZGxlZCBpbmxpbmUsIGFzIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgbGluZSAxOCBvZiB0aGUgYEtjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmRpdGlvbmFsIGxvZ2ljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBibG9jay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY2NQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gTWF6ZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBjdXJyZW50IGZvY3VzIGlzIGRlZmluaXRlbHkgd2l0aGluIGFuIGAjaWYgU1RNTUFDX0VUSGAgYmxvY2suIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGBTVE1NQUNfRVRIYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSBjb21waWxlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUgYXNzdW1wdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgb3RoZXIgb3B0aW9ucywgYW5kIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaWYgYFNUTU1BQ19MSUJQQ0lgIGlzIGRlZmluZWQgb3IgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19MSUJQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTk1CgkJCQkJCQlvdXRwdXQ6IDE4MQoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYWRkaW5nIG5ldyBETUEgY2hhbm5lbCBkZWluaXRpYWxpemF0aW9uIGxvZ2ljIHRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRhcmdldGluZyB0aGUgRFdNQUM0IGFuZCA0LjEwIGNvcmVzLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4KCkkgc2VlIHRoYXQgYFNUTU1BQ19QQ0lgIGlzIHRoZSBoaWRkZW4gY29uZmlndXJhdGlvbiB0aGF0IG1hdHRlcnMgaGVyZS4gU28sIHRvIGVuc3VyZSB0aGlzIG5ldyBsb2dpYyBpcyBlbmFibGVkIGFuZCByZWxldmFudCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpOb3csIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsYCwgYGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbGAsIGFuZCBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHRvIHNjcnV0aW5pemUuIE15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhdm9pZGluZyByZWdyZXNzaW9ucyBhbmQgY3Jhc2hlcywgZXNwZWNpYWxseSBkdXJpbmcgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kLiBUaGF0JiMzOTtzIHdoZXJlIGZ1enppbmcgbmVlZHMgdG8gYmUgZm9jdXNlZDogdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBwYXRocyB0byB0ZXN0IHRoZSByb2J1c3RuZXNzIG9mIHRoaXMgbmV3IGRlaW5pdGlhbGl6YXRpb24gbG9naWMuCgpJIGFsc28gbm90aWNlZCBgc3RtbWFjX2RlaW5pdF9jaGFuYCwgYnV0IGl0JiMzOTtzIGEgbWFjcm87IEkgd2lsbCBub3QgY291bnQgdGhpcyBhcyBhIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMgYW5kIG1vdmUgb24uCkkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O2R3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfc3RvcF9hbGxfZG1hJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7ZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdG9wX2FsbF9kbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjM1Ljk1MjgwNjU4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU2MjIyNzAzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxcIixcbiAgICBcImR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjM1Ljk1MjgxMDQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTczNjY3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNDM0ZDliNzgyM2Q2MmIxNmVkMTU4NmU1NzhiNTdiNWE3M2FhZTMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDE4IDE2OjI0OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xcbmluZGV4IDgyOWEyM2JkYWQwMWY4Li4yM2ZmZTFhZGNkMGQzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcXG5AQCAtMTA2LDYgKzEwNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdCAgICAgICBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vkd21hYzRfYWRkcnM7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFxuK1xcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuK1xcdHZhbHVlIFxcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTSztcXG4rXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsIHUzMiBjaGFuKVxcbkBAIC0xMjUsNiArMTM2LDE3IEBAIHN0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHQgICAgICAgaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vkd21hYzRfYWRkcnM7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFxuK1xcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuK1xcdHZhbHVlIFxcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTS180XzEwO1xcbitcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXFxuIHtcXG5AQCAtNTQ4LDYgKzU3MCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzRfZG1hX29wcyA9IHtcXG4gXFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcXG4gXFx0LmluaXQgPSBkd21hYzRfZG1hX2luaXQsXFxuIFxcdC5pbml0X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfY2hhbm5lbCxcXG4rXFx0LmRlaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCxcXG4gXFx0LmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLFxcbiBcXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXFxuIFxcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcXG5AQCAtNTc3LDYgKzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0ge1xcbiBcXHQucmVzZXQgPSBkd21hYzRfZG1hX3Jlc2V0LFxcbiBcXHQuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCxcXG4gXFx0LmluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwsXFxuK1xcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcXG4gXFx0LmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLFxcbiBcXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXFxuIFxcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggZTYzMTdiOTRmZmY3ZDQuLjA0ZGFmZWMwMjFiNGY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbkBAIC0xNzAsNiArMTcwLDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcXG4gXFx0dm9pZCAoKmluaXQpKHZvaWQgX19pb21lbSAqaW9hZGRyLCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpO1xcbiBcXHR2b2lkICgqaW5pdF9jaGFuKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pO1xcbitcXHR2b2lkICgqZGVpbml0X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuK1xcdFxcdFxcdCAgICB1MzIgY2hhbik7XFxuIFxcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLFxcbiBcXHRcXHRcXHQgICAgIGRtYV9hZGRyX3QgcGh5LCB1MzIgY2hhbik7XFxuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xcbiBcXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdCwgX19hcmdzKVxcbiAjZGVmaW5lIHN0bW1hY19pbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4gXFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXFxuKyNkZWZpbmUgc3RtbWFjX2RlaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXFxuICNkZWZpbmUgc3RtbWFjX2luaXRfcnhfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbiBcXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdF9yeF9jaGFuLCBfX3ByaXYsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggMmEwZDdlZmY4OGQzZmYuLmFmMjlhNTBkZGI4OTcyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI1NjAsNiArMjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG4gXFx0dTggdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xcbitcXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XFxuIFxcdHU4IGNoYW47XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG5AQCAtMjU2Nyw2ICsyNTY4LDkgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3N0b3BfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4gXFx0XFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xcbitcXG4rXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKylcXG4rXFx0XFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDozNi40MTA3ODMzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUxNjQyODM5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxcIixcbiAgICBcImR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTQzNGQ5Yjc4MjNkNjJiMTZlZDE1ODZlNTc4YjU3YjVhNzNhYWUzMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDE2OjI0OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jXG5pbmRleCA4MjlhMjNiZGFkMDFmOC4uMjNmZmUxYWRjZDBkMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xuQEAgLTEwNiw2ICsxMDYsMTcgQEAgc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ICAgICAgIGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZHdtYWM0X2FkZHJzO1xuK1x0dTMyIHZhbHVlO1xuK1xuK1x0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbitcdHZhbHVlIFx1MDAyNj0gfkRNQV9DSEFOX0lOVFJfREVGQVVMVF9NQVNLO1xuK1x0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pXG5AQCAtMTI1LDYgKzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdCAgICAgICBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdFx0dm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vkd21hYzRfYWRkcnM7XG4rXHR1MzIgdmFsdWU7XG4rXG4rXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuK1x0dmFsdWUgXHUwMDI2PSB+RE1BX0NIQU5fSU5UUl9ERUZBVUxUX01BU0tfNF8xMDtcbitcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxuIHtcbkBAIC01NDgsNiArNTcwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNF9kbWFfb3BzID0ge1xuIFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHdtYWM0X2RtYV9pbml0LFxuIFx0LmluaXRfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9jaGFubmVsLFxuK1x0LmRlaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbkBAIC01NzcsNiArNjAwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNDEwX2RtYV9vcHMgPSB7XG4gXHQucmVzZXQgPSBkd21hYzRfZG1hX3Jlc2V0LFxuIFx0LmluaXQgPSBkd21hYzRfZG1hX2luaXQsXG4gXHQuaW5pdF9jaGFuID0gZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbCxcbitcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2Q0Li4wNGRhZmVjMDIxYjRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMTcwLDYgKzE3MCw4IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XG4gXHR2b2lkICgqaW5pdCkodm9pZCBfX2lvbWVtICppb2FkZHIsIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZyk7XG4gXHR2b2lkICgqaW5pdF9jaGFuKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbik7XG4rXHR2b2lkICgqZGVpbml0X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgIHUzMiBjaGFuKTtcbiBcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsXG4gXHRcdFx0ICAgICBkbWFfYWRkcl90IHBoeSwgdTMyIGNoYW4pO1xuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXQsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19pbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdF9jaGFuLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19kZWluaXRfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9yeF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfcnhfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2MCw2ICsyNTYwLDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3N0b3BfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0dTggcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7XG4rXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XG4gXHR1OCBjaGFuO1xuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbkBAIC0yNTY3LDYgKzI1NjgsOSBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4gXHRcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKylcbitcdFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbiB9XG4gXG4gLyoqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDozNi40MTA3ODQ5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTk3Mjg0MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgRE1BIERlLWluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgaXQncyB0b3VjaGluZyBgZHdtYWM0X2RtYS5jYCwgYGh3aWYuaGAsIGFuZCBgc3RtbWFjX21haW4uY2Agd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQgYWRkcyBhIGBkZWluaXRfY2hhbmAgY2FsbGJhY2sgdG8gdGhlIGBzdG1tYWNfZG1hX29wc2Agc3RydWN0IGFuZCBpbXBsZW1lbnRzIGl0IGZvciBgZHdtYWM0YCBhbmQgYGR3bWFjNDEwYCBETUEgb3BlcmF0aW9ucy4gVGhlIHBhdGNoIGFsc28gZW5zdXJlcyB0aGlzIGNhbGxiYWNrIGdldHMgY2FsbGVkIGR1cmluZyBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5gc3RtbWFjYCBpcywgYXMgSSByZWNhbGwsIHRoZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgMTAvMTAwLzEwMDAgRXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSBcIkVRT1NcIiBvbmVzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBRRU1VIChvciBhbnkgcmVhZGlseSBhdmFpbGFibGUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm0pIGVtdWxhdGUgdGhpcyBoYXJkd2FyZT9cblxuTGV0J3Mgc2Vl4oCmIFFFTVUgaGFzIGVtdWxhdGVkIGhhcmR3YXJlIGZvciBhIGxvdCBvZiBuZXR3b3JrIGludGVyZmFjZXMsIGluY2x1ZGluZyBgaW14X2ZlY2AsIGBjYWRlbmNlX2dlbWAsIGBmdGdtYWMxMDBgLCBgbGFuOTExOGAsIGBzbWM5MWMxMTFgLCBgc3RlbGxhcmlzX2VuZXRgLCBhbmQgYHhnbWFjYCwgYnV0IHRoYXQgZG9lc24ndCBuZWNlc3NhcmlseSBtZWFuIGl0IHN1cHBvcnRzICp0aGlzKiBvbmUuIFdhaXQgYSBtaW51dGUuLi4gYHN0bW1hY2AgaXNuJ3QgU1RNaWNyb2VsZWN0cm9uaWNzIHNwZWNpZmljLCBpdCdzIGFjdHVhbGx5IFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykuIEFoYSFcblxuU28sIGRvZXMgUUVNVSBlbXVsYXRlIERXTUFDPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2VzLCBzZWFyY2hpbmcgZm9yIFBDSSBJRHMgb3IgcGxhdGZvcm0gZHJpdmVycyBhc3NvY2lhdGVkIHdpdGggYHN0bW1hY2AgdG8gZmluZCBpdCBpbiB0aGUgUUVNVSBzb3VyY2UgY29kZS4gUmVtZW1iZXIgdGhhdCBgc3RtbWFjYCBpcyB1c3VhbGx5IGZvdW5kIGluIEFSTS1iYXNlZCBTb0NzIGxpa2UgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgYW5kIHN1Y2gsIGFuZCBJIGJldCBzb21lIG9mIHRob3NlIHBsYXRmb3JtcyBhcmUgZW11bGF0ZWQuXG5cbkFscmlnaHQsIFFFTVUgZW11bGF0ZXMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgd2hpY2ggaXMgZm9yIHRoZSBBbGx3aW5uZXIgSDMuIElzIHRoYXQgdXNpbmcgYHN0bW1hY2A/IE5vLCBpdCBsb29rcyBsaWtlIGBzdW44aS1lbWFjYCBpcyBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgYHN0bW1hY2AgZHJpdmVyICppcyogdXNlZCBieSBhIFwiZHdtYWMtc3VuOGlcIi4gT2ghIFRoYXQncyBpdCEgYGR3bWFjLXN1bjhpYCBsb29rcyBsaWtlIGEgZnJvbnRlbmQgZm9yIGBzdG1tYWNgLiBOb3csIHRoYXQncyB1c2VmdWwuXG5cblNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqYW55KiBwbGF0Zm9ybSB0aGF0IHVzZXMgYHN0bW1hY2A/XG5cblllcyEgRXVyZWthISBRRU1VICpkb2VzKiBlbXVsYXRlIGBody9uZXQvZGVzaWdud2FyZS5jYCEgTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYGRlc2lnbndhcmUuY2AgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgKmlzKiB0aGUgYHN0bW1hY2AgaGFyZHdhcmUsIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBjYWxsZWQgYHN0bW1hY2AuXG5cbkluIHRoZSBrZXJuZWwsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgIHdpbGwgaGF2ZSB0aGUgUENJIElEcywgc28gSSdsbCBjb3JyZWxhdGUgdGhvc2UgdG8gYmUgc3VyZSwgYnV0IGl0IGxvb2tzIHByb21pc2luZy4gV2l0aCBhIGJpdCBvZiBsdWNrLCB0aGlzIHBhdGNoIHNob3VsZCBiZSB0ZXN0YWJsZSBpbiBRRU1VIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NDYuNjA4MDcwNzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTgzMDU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0RXTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NDYuNjY2NjYwNTIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NTQyNjEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGZvciBQQ0kgSURzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBQQ0kgSURzIGFyZSByZWxldmFudCB0byB0aGlzIHNpdHVhdGlvbiwgc28gSSdtIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZS4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gdGhlcmUgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGhhbmRsaW5nIFBDSSBkZXZpY2UgaWRlbnRpZmljYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBJRCB0YWJsZXMg4oCTIHZlbmRvciBJRHMsIGRldmljZSBJRHMsIHN1YnN5c3RlbSBJRHMsIGFuZCBzdWJzeXN0ZW0gdmVuZG9yIElEcyDigJMgdGhhdCB0aGUgZHJpdmVyIHVzZXMgdG8gcmVjb2duaXplIHRoZSBoYXJkd2FyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucyB0aGF0IGJpbmQgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBzaWxpY29uLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQgYW5kIGNvbW1lbnRlZDsgdGhhdCBhbHdheXMgbWFrZXMgdGhpbmdzIGVhc2llci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDo0OS43NTIwODg0NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MjQ3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDA6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAxOiNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjQ5LjgwODUxNzY4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTE0Mzc0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRRU1VIE5ldHdvcmsgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIFFFTVUgc2l0dWF0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgYGh3L25ldC9kZXNpZ253YXJlLmNgICptaWdodCogYmUgaW1wbGVtZW50ZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2UuIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCdzIHNlZS4uLiBjYW4gd2UgZXZlbiBmdXp6IGBzdG1tYWNgPyBJJ2QgZXhwZWN0IFN5emthbGxlciB0byBoYXZlIGNvdmVyYWdlIGZvciBzb21ldGhpbmcgbGlrZSB0aGF0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIHF1aWNrbHkgY2hlY2s7IGRvZXMgU3l6a2FsbGVyIGhhdmUgYW55IHNwZWNpZmljIGRlc2NyaXB0aW9ucyBmb3IgYHN0bW1hY2A/IEhtbSwgaXQncyBub3QgYSBnaXZlbi4gU3l6a2FsbGVyIHVzdWFsbHkgaGFuZGxlcyBuZXR3b3JrIGRldmljZSBmdXp6aW5nIHdpdGggYHR1bi90YXBgIG9yIGBuZXRsaW5rYCwgYnV0IGRpcmVjdCBoYXJkd2FyZSBkcml2ZXIgZnV6emluZyByZWFsbHkgb25seSBoYXBwZW5zIGZvciBQQ0ksIFVTQiBkZXZpY2VzLCBvciBpZiB0aGVyZSBhcmUgZXhwbGljaXQgU3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgaXQuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQhIGBzdG1tYWNgICppcyogYSBQQ0kgZGV2aWNlLCBpc24ndCBpdD8gKDB4MTEwOCwgMHg3MTAyLCBJIHJlY2FsbCBzZWVpbmcgdGhvc2UgdmVuZG9yL2RldmljZSBJRHMgYmVmb3JlKS4gT2theSwgdGhhdCdzIHByb21pc2luZyEgU3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgb3Igc2ltaWxhciBQQ0ktc3BlY2lmaWMgc3lzY2FsbHMuIFRoYXQncyBhIGdvb2QgbGVhZC5cblxuTm93LCBsZXQncyBjb25uZWN0IHRoZSBkb3RzLiBUaGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQsIGlzIGl0IGZvciBgZHdtYWM0X2RtYS5jYD8gVGhhdCdzIHRoZSBrZXkuIERvZXMgYGR3bWFjNGAgZ2V0IHVzZWQgaW4gYSBQQ0kgY29udGV4dD8gSSdsbCBuZWVkIHRvIGdvIGxvb2sgYXQgYHN0bW1hY19wY2kuY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGxpbmsgdG8gdGhhdCBgZHdtYWM0YCBjb2RlLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBjcnVjaWFsIGNsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTQuNjU5OTU3MTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTc2Njc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hYzRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDo1NC43MTc5NDMwMDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2NjA5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBDSSBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgc3RtbWFjYCBkcml2ZXIgaXMgdXNpbmcgUENJLiBUaGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyBsaWtlbHkgdGhlIGNvcmUgUENJIGRyaXZlciBmaWxlLCB3aGljaCwgYmFzZWQgb24gdGhlIGNvbnRleHQsIGlzIHByb2JhYmx5IGBzdG1tYWNfcGNpLmNgLiBNeSBpbnN0aW5jdCBpcyB0byBvcGVuIHRoYXQgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIElEIG1hdGNoaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnkgYW5kIGludGVycnVwdCBsaW5lcywgdXN1YWxseSksIGFueSBzcGVjaWZpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3MsIGFuZCBvZiBjb3Vyc2UsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBtYW5hZ2VzIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIGJhc2VkIG9uIHRoZSBQQ0kgaW5mb3JtYXRpb24gaXQgZmluZHMuIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIG1hcCBvdXQgdGhlIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgaGFuZGxpbmcgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBkZXBlbmRlbmNpZXMuIEknbSBhc3N1bWluZyBpdCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBQQ0kgZHJpdmVyIG1vZGVsLCBidXQgdmVyaWZ5aW5nIHRob3NlIGFzc3VtcHRpb25zIGVhcmx5IG9uIHdpbGwgc2F2ZSB0aW1lIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDY0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTguMzI0NTU0NDQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjEwODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTguMzgwNjcwOTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDI1MzM4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgR01BQzUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc25wc19nbWFjNV9wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgdGhlIG5hbWUgcHJldHR5IGNsZWFybHkgcGVncyBpdCB0byB0aGUgR01BQzUgY29udHJvbGxlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgR01BQzXigKYgbm93LCBkb2Vzbid0IHRoYXQgdXRpbGl6ZSB0aGUgYGR3bWFjNGAgY29yZT9cIiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29ubmVjdGlvbi5cblxuU2luY2UgSSdtIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGVmYXVsdCBzZXR0aW5ncywgSSBzaG91bGQgY2hlY2sgdGhlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc3RydWN0dXJlLiBUaGF0IGxpa2VseSBjb250YWlucyB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcy4gTGV0IG1lIGRlbHZlIGludG8gdGhhdCBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCB3aWxsIGNvbmZpcm0gb3IgZGVueSBteSBzdXNwaWNpb24gdGhhdCBHTUFDNSBpcyBhbiBpbnN0YW5jZSBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIDQgY29yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5OCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjAxLjkyMzIwODI5M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNzkxMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic25wc19nbWFjNV9kZWZhdWx0X2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01MD1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjU0OnN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAzOlxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MDEuOTgyMzkxODUxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDkxMjQwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERhdGEgRmlsZSoqXG5cbkFscmlnaHQsIHRoZSBkaXJlY3RpdmUgaXMgY2xlYXIuIExldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBpbW1lZGlhdGUgY3VlIGlzIHRvIGV4YW1pbmUgdGhlIGZpbGUgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYC4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbiAtIFwic25wc1wiIHN1Z2dlc3RzIFNpbmdsZSBOdWNsZW90aWRlIFBvbHltb3JwaGlzbXMgZGF0YSwgXCJnbWFjNVwiIHByb2JhYmx5IGRlbm90ZXMgYSBzcGVjaWZpYyBleHBlcmltZW50LCBtZXRob2RvbG9neSwgb3IgdmVyc2lvbiwgYW5kIFwiZGVmYXVsdF9kYXRhXCIgbGlrZWx5IGluZGljYXRlcyBlaXRoZXIgdGhlIHJhd2VzdCBmb3JtIG9yIGEgY3VyYXRlZCBiYXNlbGluZSBkYXRhc2V0LiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIGxpa2VseSBmaWxlIGZvcm1hdCAtIGlzIGl0IGEgVkNGLCBhIHBsYWluIHRleHQgdGFibGUsIGEgYmluYXJ5IGZvcm1hdD8gVGhlICdkZWZhdWx0JyBwYXJ0IGltcGxpZXMgYSBzdGFydGluZyBwb2ludCwgc28gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcHJlcHJvY2Vzc2luZyBzdGVwcyB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gYXBwbGllZC4gS25vd2luZyB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgZm91bmRhdGlvbmFsIGZvciBhbnkgZG93bnN0cmVhbSBhbmFseXNpcy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgbWV0YWRhdGEsIHRoZSBkYXRhIHN0cnVjdHVyZSwgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBhc3NvY2lhdGVkIHdpdGggaXQuIEZyb20gdGhlIG5hbWUgYWxvbmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCB0aGUgYW5hbHl0aWNhbCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzg4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MDUuMzkxNTE4MTI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XFxuICA5MzpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjA1LjM5MTU5MDk3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA5MzQyODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFN5emthbGxlciBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgYXNzaWdubWVudDogYHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtgLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBgZHdtYWM0YC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQncyB0aGUgUENJIGltcGxlbWVudGF0aW9uLCByaWdodD8gQW5kIEkgcmVjYWxsIHRoYXQgZmlsZSBiZWluZyBjb21waWxlZCB1bmRlciBgQ09ORklHX1NUTU1BQ19QQ0lgLlxuXG5UaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogKmNhbiogc3l6a2FsbGVyIGZ1enogdGhpcz8gV2VsbCwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGF0J3MgZGVmaW5pdGVseSBhIHBvaW50IGluIGZhdm9yLiBCdXQgZG9lcyBpdCBmdXp6ICpzcGVjaWZpY2FsbHkqIHRoZSBgc3RtbWFjYCBkcml2ZXI/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC5cblxuVG8gZG8gdGhhdCwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIGVpdGhlciBgQ09ORklHX1NUTU1BQ19FVEhgIChmb3IgdGhlIEV0aGVybmV0IGRyaXZlciBpbiBnZW5lcmFsKSBvciBgQ09ORklHX1NUTU1BQ19QQ0lgIHNwZWNpZmljYWxseS4gTGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byBzZWUgd2hhdCB0aGUgZGVhbCBpcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3ODMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxMC4yMDA5MzYzOTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgMzU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuICAzNjpcXHRcXHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGlmIFNUTU1BQ19QTEFURk9STVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxcIlxcbiAgNDY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA0NzpcXHRcXHRzZWxlY3QgTUlJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gIDQ5OlxcdFxcdGhlbHBcXG4gIDUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIERXTUFDX0dFTkVSSUNcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuICA1NDpcXHRcXHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4gIDU3OlxcdFxcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxcbiAgNTg6XFx0XFx0ICBkYXRhIGZvciBzZXR1cC5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIERXTUFDX0FOQVJJT05cXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4gIDYyOlxcdFxcdGRlZmF1bHQgQVJDXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBEV01BQ19FSUM3NzAwXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcXG4gIDc0OlxcdFxcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xcbiAgNzU6XFx0XFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcXG4gIDc2OlxcdFxcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBEV01BQ19JTkdFTklDXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4gIDgwOlxcdFxcdGRlZmF1bHQgTUFDSF9JTkdFTklDXFxuICA4MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoTUFDSF9JTkdFTklDIHx8IENPTVBJTEVfVEVTVClcXG4gIDgyOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA4MzpcXHRcXHRoZWxwXFxuICA4NDpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gSW5nZW5pYyBTb0NzLlxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA4NzpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcXG4gIDg4OlxcdFxcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA4OTpcXHRcXG4gIDkwOlxcdGNvbmZpZyBEV01BQ19JUFE4MDZYXFxuICA5MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUUNBIElQUTgwNnggRFdNQUMgc3VwcG9ydFxcXCJcXG4gIDkyOlxcdFxcdGRlZmF1bHQgQVJDSF9RQ09NXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxcbiAgOTQ6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDk1OlxcdFxcdGhlbHBcXG4gIDk2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUUNBIElQUTgwNlggRFdNQUMgRXRoZXJuZXQuXFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gIDk5OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgaGFyZHdhcmVcXG4gMTAwOlxcdFxcdCAgYWNjZWxlcmF0aW9uIGZlYXR1cmVzIGF2YWlsYWJsZSBvbiB0aGlzIFNvQy4gTmV0d29yayBkZXZpY2VzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjEwLjIwMTA0MTg0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE5NjY1OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUHJpb3JpdGl6aW5nIFNlY3VyaXR5OiBJbml0aWF0aW5nIFBDSSBDb21wbGlhbmNlIFJldmlldyoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQncyB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGFuZCBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHJpZ2h0IHBhdGguIEdpdmVuIHRoZSBzZW5zaXRpdmUgbmF0dXJlIG9mIHRoZSBwcm9qZWN0IGFuZCB0aGUgZGF0YSBpbnZvbHZlZCwgSSBuZWVkIHRvIG1ha2UgUENJIGNvbXBsaWFuY2UgdGhlIHZlcnkgZmlyc3Qgc3RvcCBvbiB0aGUgY2hlY2tsaXN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGNhcmRob2xkZXIgZGF0YSBpbiBhbnkgd2F5LCBzaGFwZSwgb3IgZm9ybSwgUENJIGlzIGdvaW5nIHRvIGJlIGEgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1pbmQgb24gdGhlIHNjb3BlLCBhbmQgdGhhdCB3aWxsIHNldCB0aGUgZ3JvdW5kd29yayBmb3IgYWxsIGZ1dHVyZSBkZXNpZ24gYW5kIGRldmVsb3BtZW50IGNob2ljZXMuIFNvLCBsZXTigJlzIGJlZ2luIHRoZXJlLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIFBDSSByZXZpZXcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFoZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYzMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxMy4zMjA3MTA3OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzI3MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MTMuMzg0NDQzMzk4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzE4NDgyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRHJpdmVyIENvbmZpZ3VyYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhdCBwbGF5IGhlcmUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgdGhlIGtleSBmbGFncyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhvc2Ugc2V0dGluZ3MgYWN0dWFsbHkgaW5mbHVlbmNlIHRoZSBidWlsZC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGBkd21hYzRfZG1hLmNgIGZpbGUgaXMgZ2V0dGluZyBjb21waWxlZCB3aGVuIHRoZSBgU1RNTUFDX0VUSGAgb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiB0aGF0IEkgbmVlZCB0byBhbnN3ZXIuIEkgc3VzcGVjdCB0aGUgYW5zd2VyIGlzIHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3Igc29tZSBvdGhlciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5ODgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxNi42MTYyOTQxNjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjUxNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3bWFjNF9kbWEub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zPXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS02LVxcdCAgICAgIG1tY19jb3JlLm8gc3RtbWFjX2h3dHN0YW1wLm8gc3RtbWFjX3B0cC5vIGR3bWFjNF9kZXNjcy5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjc6XFx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOC1cXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjE2LjY3NDk1MDkyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDIwMTQyNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0bW1hY2AgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBjbGVhcmx5IGJlbG9uZ3Mgd2l0aGluIHRoZSBgc3RtbWFjLW9ianNgIGNvbnRleHQ7IHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBkZWluaXRfY2hhbmAgZnVuY3Rpb24gdG8gdGhlIGBkd21hYzRfZG1hX29wc2AgYW5kIGBkd21hYzQxMF9kbWFfb3BzYCBzdHJ1Y3R1cmVzLiBUaGF0J3MgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgbW9kaWZ5aW5nIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBub3cgY2FsbHMgdGhpcyBuZXdseSBhZGRlZCBgc3RtbWFjX2RlaW5pdF9jaGFuYCBmdW5jdGlvbi4gV2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgbW9yZSB0aG9yb3VnaGx5IHNodXR0aW5nIGRvd24gYSBjaGFubmVsLlxuXG5CdXQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24gaXMgZXZlbiBhY3RpdmVseSB1c2VkIGluIHRoZSBjb2RlLiBJIG11c3QgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBmdW5jdGlvbiBjcml0aWNhbCwgdXNlZCBvbmx5IGluIHJhcmUgY2FzZXMsIG9yIHBvdGVudGlhbGx5IGRlYWQgY29kZT8gSXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24gYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjIwLjY5NTEwMTI0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMTQyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTQwPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI1NTQ6ICogc3RtbWFjX3N0b3BfYWxsX2RtYSAtIHN0b3AgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTUtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1OTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjQyPXN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI2MC1cXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjYxOlxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTAxPXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMTgtXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMTk6XFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgxODE9aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNC1cXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIwNTpcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MjAuNzU3MTIyOTg0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTc2NTI2MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogaXQuIFRoaXMgcGF0Y2ggbG9va3MgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCB0b3VjaGVzIHNvbWUga2V5IGNsZWFudXAgZnVuY3Rpb25zOiBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpbnRlcnJ1cHQgaGFuZGxpbmcgZHVyaW5nIGludGVyZmFjZSBzaHV0ZG93biBhbmQgc3VzcGVuZCwgc28gaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIGNvbnRyb2wgcGF0aCBvcGVyYXRpb25zIHJhdGhlciB0aGFuIGhpZ2gtZnJlcXVlbmN5IGRhdGEgcGF0aHMuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZyBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hlZCBkdXJpbmcgaW50ZXJmYWNlIGJyaW5nLXVwIGFuZCBicmluZy1kb3duIC0gdmVyeSBjb21tb24gb3BlcmF0aW9ucyBmb3IgZnV6emluZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoaW4gYF9fc3RtbWFjX3JlbGVhc2VgICh0cmlnZ2VyZWQgYnkgYG5kb19zdG9wYCksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgZHVyaW5nIHN1c3BlbmQsIG1ha2luZyB0aGVtIGVhc2lseSByZWFjaGFibGUuIFNpbmNlIGBzdG1tYWNgIHN1cHBvcnRzIFBDSSwgSSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgYHN5el9wY2lfdnBjaWAgY2FsbCB0byBpbnN0YW50aWF0ZSBhIFBDSSBkZXZpY2UgYW5kIGJyaW5nIHRoZSBpbnRlcmZhY2UgdXAgYW5kIGRvd24gcmVwZWF0ZWRseS4gVGhpcyBpcyBhIGNsYXNzaWMgc3l6a2FsbGVyIGZ1enppbmcgdGVjaG5pcXVlLiBBZGRpdGlvbmFsbHksIEkga25vdyB0aGF0IGBzdG1tYWNgIGlzIGEgbmV0d29yayBkZXZpY2UsIGFuZCBzeXprYWxsZXIncyBjb21tb24gb3BlcmF0aW9ucyBpbmNsdWRlIGJyaW5naW5nIG5ldHdvcmsgaW50ZXJmYWNlcyB1cCBhbmQgZG93biwgc28gSSdsbCBzZWUgbG90cyBvZiBjb3ZlcmFnZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJIHNlZSBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgIGFyZSBjcml0aWNhbC4gSSBjaGVja2VkIHRoZSBLY29uZmlnIGFuZCB2ZXJpZmllZCB0aGF0IGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBTVE1NQUNfRVRIYCwgc28gYm90aCBhcmUgbmVjZXNzYXJ5LiBJJ20gZ29pbmcgdG8gYWRkIHRoZXNlIHRvIHRoZSBjb25maWcuXG5cblRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBoZXJlIGFyZSB0aGUgb25lcyB0aGUgcGF0Y2ggbW9kaWZpZXMsIHNwZWNpZmljYWxseSBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBJJ3ZlIHZlcmlmaWVkIHRoZWlyIGV4YWN0IG5hbWVzLCBhbmQgdGhleSdyZSBhbGwgcmVhY2hhYmxlIHZpYSBjb250cm9sIHBhdGggb3BlcmF0aW9ucywgd2hpY2ggbWVhbnMgdGhleSdyZSB2ZXJ5IGFwcHJvcHJpYXRlIGZvciBmdXp6aW5nLiBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgaXMgYSBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSB0YXJnZXQuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHBhdGNoJ3MgYGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxgIGltcGxlbWVudGF0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgY2xlYXJpbmcgaW50ZXJydXB0IGVuYWJsZSBtYXNrcyBmb3IgRE1BIGNoYW5uZWxzLCB3aGljaCBpcyBsaWtlbHkgZml4aW5nIGFuIGludGVycnVwdC1yZWxhdGVkIGJ1ZyBkdXJpbmcgaW50ZXJmYWNlIHNodXRkb3duIG9yIHN1c3BlbmQuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2Ugc3VnZ2VzdHMgdGhhdCBmdXp6aW5nIHRoZXNlIGludGVycnVwdC1yZWxhdGVkIG9wZXJhdGlvbnMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIG1lbW9yeSBzYWZldHkgb3Igb3RoZXIgaXNzdWVzLlxuXG5GaW5hbGx5LCB3aGlsZSBJICpjb3VsZCogYWxzbyBpbmNsdWRlIGBEV01BQ19HRU5FUklDYCBhbmQgYFNUTU1BQ19QTEFURk9STWAganVzdCBpbiBjYXNlLCBJIHRoaW5rIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBzdWZmaWNpZW50IGJlY2F1c2Ugb2Ygc3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGBzeXpfcGxhdGZvcm1fZGV2aWNlYCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cy4gSG93ZXZlciwgc2luY2UgYFNUTU1BQ19QTEFURk9STWAgZGVmYXVsdHMgdG8geWVzLCBJIHNob3VsZCBiZSBjb3ZlcmVkLiBJJ20gZ29pbmcgdG8gcHJvY2VlZCB3aXRoIGZ1enppbmcgdXNpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYW5kIHNlZSBob3cgaXQgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NjUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjMzLjMzMzY1MzM2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2Mjk2NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MzMuNjc5OTU3MDg3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjgwNjQ0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBTVE1NQUNfUENJIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfUENJYC4gV2UncmUgdGFsa2luZyBhYm91dCBhIFBDSS1iYXNlZCBTVE1pY3JvZWxlY3Ryb25pY3MgR2lnYWJpdCBFdGhlcm5ldCBNQUMsIHNvIGEgdGhvcm91Z2ggZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbWFqb3IgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwcyB3aXRoOlxuXG4qICAgKipUaGUgUENJIHN1YnN5c3RlbToqKiBTcGVjaWZpY2FsbHksIHdoYXQgZHJpdmVyIG1vZGVscyBhcmUgYXNzdW1lZD8gSXMgaXQgdXRpbGl6aW5nIHRoZSBzdGFuZGFyZCBgcGNpX2RyaXZlcmAgZnJhbWV3b3JrLCBvciBhcmUgdGhlcmUgY3VzdG9tIGludGVyYWN0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyAoTVNJIHZzLiBsZWdhY3kpLCBhbmQgcG93ZXIgbWFuYWdlbWVudCBob29rcywgYW1vbmcgb3RoZXIgdGhpbmdzLiBJIHdpbGwgYmUgbG9va2luZyBpbnRvIHRoZSBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwLlxuKiAgICoqVGhlIFNUTU1BQyBjb3JlIGRyaXZlcjoqKiBXaGF0IHZlcnNpb24gb2YgdGhlIGNvcmUgaXMgaXQgbGlua2VkIHRvPyBBbnkgc3BlY2lmaWMgcGF0Y2hlcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXBwbGllZCBhdCB0aGUgY29yZSBsZXZlbCB0aGF0IGltcGFjdCB0aGUgUENJIHZhcmlhbnQ/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGZlYXR1cmUgc2V0IHN1cHBvcnRlZCBieSB0aGlzIHBhcnRpY3VsYXIgaW5zdGFudGlhdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBzbyBJIGNhbiBwcmVkaWN0IGVkZ2UgY2FzZXMuXG4qICAgKipOZXR3b3JraW5nIHN0YWNrIGNvbXBvbmVudHM6KiogVGhlIGludGVncmF0aW9uIHBvaW50cyB3aXRoIHRoZSBgbmV0ZGV2YCBBUEkgYXJlIG9idmlvdXMsIGJ1dCBhcmUgdGhlcmUgYW55IHVudXN1YWwgaG9va3Mgb3Igd29ya2Fyb3VuZHMgbmVjZXNzYXJ5PyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzIChjaGVja3N1bSwgVFNPLCBldGMuKSBiZWluZyB1dGlsaXplZCwgYW5kIGlmIHNvLCBob3cgYXJlIHRoZXkgbWFuYWdlZCBpbiB0aGUgUENJIGNvbnRleHQ/IEFyZSB0aGVyZSBhbnkgZmxvdyBjb250cm9sIG9yIFFvUyBmZWF0dXJlcyBlbmFibGVkP1xuKiAgICoqSGFyZHdhcmUgc3BlY2lmaWNzOioqIE9mIGNvdXJzZSwgdGhlIHNwZWNpZmljIHNpbGljb24gcmV2aXNpb24gaXMgcGFyYW1vdW50LiBBcmUgdGhlcmUga25vd24gZXJyYXRhIG9yIGhhcmR3YXJlIHF1aXJrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGBTVE1NQUNfUENJYCB2YXJpYW50PyBJIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhc2hlZXRzIGFuZCBhbnkgYXZhaWxhYmxlIGVycmF0YSBzaGVldHMuXG4qICAgKipPdGhlciBkcml2ZXJzOioqIElzIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3Qgb3IgZGVwZW5kZW5jeSBvbiBvdGhlciBkcml2ZXJzIG9uIHRoZSBzYW1lIFBDSSBidXM/IE9yIGFueSBvdGhlciBkZXZpY2VzIHRoYXQgbWlnaHQgYWZmZWN0IHRoZSBvcGVyYXRpb24gb2YgdGhlIG5ldHdvcmsgY29udHJvbGxlcj9cblxuVWx0aW1hdGVseSwgbXkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcG9ydGFiaWxpdHksIG1haW50YWluYWJpbGl0eSwgYW5kIGZ1dHVyZSB1cGRhdGVzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIHNldCBtZSB1cCB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBhbnkgdGFza3MgcmVsYXRlZCB0byBgU1RNTUFDX1BDSWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjU2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MzguMjA4MDIzODI2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDA3LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjM4LjIwODA5OTY4NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM5MTcyMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgU1RNTUFDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFNUTU1BQ19QQ0lgIG9wdGlvbiB3YXMgY29udGluZ2VudCBvbiBgU1RNTUFDX0VUSGAuIEJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aGUgY2FzZSwgYW5kIEkga25vdyB0aGVzZSBkcml2ZXJzIGluc2lkZSBhbmQgb3V0LiBBaCwgcmlnaHQuIEl0J3MgY2xldmVybHkgdHVja2VkICp3aXRoaW4qIGFuIGBpZiBTVE1NQUNfRVRIYCBibG9jay4gVGhpcyBtZWFucyB0aGUgZGVwZW5kZW5jeSBpcyBoYW5kbGVkIGlubGluZSwgYXMgYSBjb25kaXRpb25hbCBpbmNsdXNpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBsaW5lIDE4IG9mIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGUgZXhhY3QgY29uZGl0aW9uYWwgbG9naWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGJsb2NrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDEuNjQ3Mjc0NTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDEuNjQ3MzUwMzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NTAxMjE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBNYXplKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBjdXJyZW50IGZvY3VzIGlzIGRlZmluaXRlbHkgd2l0aGluIGFuIGAjaWYgU1RNTUFDX0VUSGAgYmxvY2suIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGBTVE1NQUNfRVRIYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSBjb21waWxlZC4gVGhhdCdzIHRoZSBiYXNlbGluZSBhc3N1bXB0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCBvdGhlciBvcHRpb25zLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBpZiBgU1RNTUFDX0xJQlBDSWAgaXMgZGVmaW5lZCBvciBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY2NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDUuMjAyMzY0ODUxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU5MzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0xJQlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNTo0NS4yNzA5NjM4NDlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxNjczOTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIGFib3V0IGFkZGluZyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIHRhcmdldGluZyB0aGUgRFdNQUM0IGFuZCA0LjEwIGNvcmVzLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC5cblxuSSBzZWUgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGhpZGRlbiBjb25maWd1cmF0aW9uIHRoYXQgbWF0dGVycyBoZXJlLiBTbywgdG8gZW5zdXJlIHRoaXMgbmV3IGxvZ2ljIGlzIGVuYWJsZWQgYW5kIHJlbGV2YW50LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBzZXQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGludm9sdmUgdGhlc2UgZnVuY3Rpb25zOiBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGVzZSBhcmUgdGhlIGtleSBhcmVhcyB0byBzY3J1dGluaXplLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgYXZvaWRpbmcgcmVncmVzc2lvbnMgYW5kIGNyYXNoZXMsIGVzcGVjaWFsbHkgZHVyaW5nIGludGVyZmFjZSB0ZWFyZG93biBhbmQgc3VzcGVuZC4gVGhhdCdzIHdoZXJlIGZ1enppbmcgbmVlZHMgdG8gYmUgZm9jdXNlZDogdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBwYXRocyB0byB0ZXN0IHRoZSByb2J1c3RuZXNzIG9mIHRoaXMgbmV3IGRlaW5pdGlhbGl6YXRpb24gbG9naWMuXG5cbkkgYWxzbyBub3RpY2VkIGBzdG1tYWNfZGVpbml0X2NoYW5gLCBidXQgaXQncyBhIG1hY3JvOyBJIHdpbGwgbm90IGNvdW50IHRoaXMgYXMgYSBmdW5jdGlvbiB0byBmb2N1cyBvbi5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gSSdsbCBtYWtlIGEgbm90ZSBvZiB0aGlzIGFuZCBtb3ZlIG9uLlxuSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5OTUsIk91dHB1dFRva2VucyI6MTgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjUxLjQ4NzcwNTM0MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzU4NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwiZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsXCIsXG4gICAgXCJzdG1tYWNfc3RvcF9hbGxfZG1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwiZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsXCIsXG4gICAgXCJzdG1tYWNfc3RvcF9hbGxfZG1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowspkh8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-18 15:40:25 +0000 UTC FinishedAt: 2026-07-18 16:25:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "b014dfa9-c572-4937-9dd0-7e39e6ef2b99" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dwmac4_dma_deinit_channel", "dwmac410_dma_deinit_channel", "stmmac_stop_all_dma" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7ZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdG9wX2FsbF9kbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU0MzRkOWI3ODIzZDYyYjE2ZWQxNTg2ZTU3OGI1N2I1YTczYWFlMzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAxNjoyNDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcbmluZGV4IDgyOWEyM2JkYWQwMWY4Li4yM2ZmZTFhZGNkMGQzNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jXG5AQCAtMTA2LDYgJiM0MzsxMDYsMTcgQEAgc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ICAgICAgIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbiYjNDM7e1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vkd21hYzRfYWRkcnM7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcbiYjNDM7XHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiYjNDM7XHR2YWx1ZSBcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTSztcbiYjNDM7XHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbilcbkBAIC0xMjUsNiAmIzQzOzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdCAgICAgICBpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdFx0dm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGR3bWFjNF9hZGRycyAqZHdtYWM0X2FkZHJzID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWR3bWFjNF9hZGRycztcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1xuJiM0MztcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuJiM0MztcdHZhbHVlIFx1MDAyNj0gfkRNQV9DSEFOX0lOVFJfREVGQVVMVF9NQVNLXzRfMTA7XG4mIzQzO1x0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0KHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXG4ge1xuQEAgLTU0OCw2ICYjNDM7NTcwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNF9kbWFfb3BzID0ge1xuIFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHdtYWM0X2RtYV9pbml0LFxuIFx0LmluaXRfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9jaGFubmVsLFxuJiM0MztcdC5kZWluaXRfY2hhbiA9IGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwsXG4gXHQuaW5pdF9yeF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3J4X2NoYW4sXG4gXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXG4gXHQuYXhpID0gZHdtYWM0X2RtYV9heGksXG5AQCAtNTc3LDYgJiM0Mzs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0MTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3bWFjNF9kbWFfcmVzZXQsXG4gXHQuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCxcbiBcdC5pbml0X2NoYW4gPSBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsLFxuJiM0MztcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2Q0Li4wNGRhZmVjMDIxYjRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMTcwLDYgJiM0MzsxNzAsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0dm9pZCAoKmluaXQpKHZvaWQgX19pb21lbSAqaW9hZGRyLCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpO1xuIFx0dm9pZCAoKmluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pO1xuJiM0MztcdHZvaWQgKCpkZWluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgIHUzMiBjaGFuKTtcbiBcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsXG4gXHRcdFx0ICAgICBkbWFfYWRkcl90IHBoeSwgdTMyIGNoYW4pO1xuQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBpbml0LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX2RlaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuJiM0MztcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9yeF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfcnhfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2MCw2ICYjNDM7MjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4gXHR1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuJiM0MztcdHU4IGRtYV9jc3JfY2ggPSBtYXgocnhfY2hhbm5lbHNfY291bnQsIHR4X2NoYW5uZWxzX2NvdW50KTtcbiBcdHU4IGNoYW47XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG5AQCAtMjU2Nyw2ICYjNDM7MjU2OCw5IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuIFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4mIzQzO1xuJiM0MztcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7c3RtbWFjX3N0b3BfYWxsX2RtYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBETUEgY2hhbm5lbCBkZWluaXRpYWxpemF0aW9uIGxvZ2ljIHRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIERXTUFDNC80LjEwIGNvcmVzLiBUaGlzIGxvZ2ljIGlzIGludm9rZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIHN0b3BwZWQgb3Igc3VzcGVuZGVkLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSBpbnRlcmZhY2UgKGUuZy4sIEdNQUM1KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGludGVyZmFjZSB0ZWFyZG93biBhbmQgc3VzcGVuZCBwYXRocyB0byBlbnN1cmUgdGhlIG5ldyBETUEgZGVpbml0IGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNDM0ZDliNzgyM2Q2MmIxNmVkMTU4NmU1NzhiNTdiNWE3M2FhZTMxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMTY6MjQ6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMKaW5kZXggODI5YTIzYmRhZDAxZjguLjIzZmZlMWFkY2QwZDM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jCkBAIC0xMDYsNiAmIzQzOzEwNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJICAgICAgIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LSZndDtwbGF0LSZndDtkd21hYzRfYWRkcnM7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsKJiM0MzsJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7CiYjNDM7CXZhbHVlICZhbXA7PSB+RE1BX0NIQU5fSU5UUl9ERUZBVUxUX01BU0s7CiYjNDM7CXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCSAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLAogCQkJCSAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pCkBAIC0xMjUsNiAmIzQzOzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkgICAgICAgaW9hZGRyICYjNDM7IERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJCXZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtJmd0O3BsYXQtJmd0O2R3bWFjNF9hZGRyczsKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwomIzQzOwl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKJiM0MzsJdmFsdWUgJmFtcDs9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTS180XzEwOwomIzQzOwl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKQogewpAQCAtNTQ4LDYgJiM0Mzs1NzAsNyBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0X2RtYV9vcHMgPSB7CiAJLnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCwKIAkuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCwKIAkuaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwsCiYjNDM7CS5kZWluaXRfY2hhbiA9IGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwsCiAJLmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLAogCS5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbiwKIAkuYXhpID0gZHdtYWM0X2RtYV9heGksCkBAIC01NzcsNiAmIzQzOzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0gewogCS5yZXNldCA9IGR3bWFjNF9kbWFfcmVzZXQsCiAJLmluaXQgPSBkd21hYzRfZG1hX2luaXQsCiAJLmluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwsCiYjNDM7CS5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCwKIAkuaW5pdF9yeF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3J4X2NoYW4sCiAJLmluaXRfdHhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF90eF9jaGFuLAogCS5heGkgPSBkd21hYzRfZG1hX2F4aSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCBlNjMxN2I5NGZmZjdkNC4uMDRkYWZlYzAyMWI0ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKQEAgLTE3MCw2ICYjNDM7MTcwLDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAl2b2lkICgqaW5pdCkodm9pZCBfX2lvbWVtICppb2FkZHIsIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZyk7CiAJdm9pZCAoKmluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAkJCSAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbik7CiYjNDM7CXZvaWQgKCpkZWluaXRfY2hhbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgdTMyIGNoYW4pOwogCXZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywKIAkJCSAgICAgZG1hX2FkZHJfdCBwaHksIHUzMiBjaGFuKTsKQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdCwgX19hcmdzKQogI2RlZmluZSBzdG1tYWNfaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcCiAJc3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfZGVpbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGRlaW5pdF9jaGFuLCBfX3ByaXYsIF9fYXJncykKICNkZWZpbmUgc3RtbWFjX2luaXRfcnhfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXAogCXN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBpbml0X3J4X2NoYW4sIF9fcHJpdiwgX19hcmdzKQogI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjU2MCw2ICYjNDM7MjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCXU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsKIAl1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7CiYjNDM7CXU4IGRtYV9jc3JfY2ggPSBtYXgocnhfY2hhbm5lbHNfY291bnQsIHR4X2NoYW5uZWxzX2NvdW50KTsKIAl1OCBjaGFuOwogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKQEAgLTI1NjcsNiAmIzQzOzI1NjgsOSBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiAJCXN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTsKJiM0MzsKJiM0MzsJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IGRtYV9jc3JfY2g7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJc3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbik7CiB9CiAKIC8qKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgRE1BIERlLWluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCYjMzk7cyB0b3VjaGluZyBgZHdtYWM0X2RtYS5jYCwgYGh3aWYuaGAsIGFuZCBgc3RtbWFjX21haW4uY2Agd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQgYWRkcyBhIGBkZWluaXRfY2hhbmAgY2FsbGJhY2sgdG8gdGhlIGBzdG1tYWNfZG1hX29wc2Agc3RydWN0IGFuZCBpbXBsZW1lbnRzIGl0IGZvciBgZHdtYWM0YCBhbmQgYGR3bWFjNDEwYCBETUEgb3BlcmF0aW9ucy4gVGhlIHBhdGNoIGFsc28gZW5zdXJlcyB0aGlzIGNhbGxiYWNrIGdldHMgY2FsbGVkIGR1cmluZyBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCmBzdG1tYWNgIGlzLCBhcyBJIHJlY2FsbCwgdGhlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgMTAvMTAwLzEwMDAgRXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSAmIzM0O0VRT1MmIzM0OyBvbmVzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBRRU1VIChvciBhbnkgcmVhZGlseSBhdmFpbGFibGUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm0pIGVtdWxhdGUgdGhpcyBoYXJkd2FyZT8KCkxldCYjMzk7cyBzZWXigKYgUUVNVSBoYXMgZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGEgbG90IG9mIG5ldHdvcmsgaW50ZXJmYWNlcywgaW5jbHVkaW5nIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgYGZ0Z21hYzEwMGAsIGBsYW45MTE4YCwgYHNtYzkxYzExMWAsIGBzdGVsbGFyaXNfZW5ldGAsIGFuZCBgeGdtYWNgLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBuZWNlc3NhcmlseSBtZWFuIGl0IHN1cHBvcnRzICp0aGlzKiBvbmUuIFdhaXQgYSBtaW51dGUuLi4gYHN0bW1hY2AgaXNuJiMzOTt0IFNUTWljcm9lbGVjdHJvbmljcyBzcGVjaWZpYywgaXQmIzM5O3MgYWN0dWFsbHkgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKS4gQWhhIQoKU28sIGRvZXMgUUVNVSBlbXVsYXRlIERXTUFDPyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlcywgc2VhcmNoaW5nIGZvciBQQ0kgSURzIG9yIHBsYXRmb3JtIGRyaXZlcnMgYXNzb2NpYXRlZCB3aXRoIGBzdG1tYWNgIHRvIGZpbmQgaXQgaW4gdGhlIFFFTVUgc291cmNlIGNvZGUuIFJlbWVtYmVyIHRoYXQgYHN0bW1hY2AgaXMgdXN1YWxseSBmb3VuZCBpbiBBUk0tYmFzZWQgU29DcyBsaWtlIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIGFuZCBzdWNoLCBhbmQgSSBiZXQgc29tZSBvZiB0aG9zZSBwbGF0Zm9ybXMgYXJlIGVtdWxhdGVkLgoKQWxyaWdodCwgUUVNVSBlbXVsYXRlcyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgLCB3aGljaCBpcyBmb3IgdGhlIEFsbHdpbm5lciBIMy4gSXMgdGhhdCB1c2luZyBgc3RtbWFjYD8gTm8sIGl0IGxvb2tzIGxpa2UgYHN1bjhpLWVtYWNgIGlzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBgc3RtbWFjYCBkcml2ZXIgKmlzKiB1c2VkIGJ5IGEgJiMzNDtkd21hYy1zdW44aSYjMzQ7LiBPaCEgVGhhdCYjMzk7cyBpdCEgYGR3bWFjLXN1bjhpYCBsb29rcyBsaWtlIGEgZnJvbnRlbmQgZm9yIGBzdG1tYWNgLiBOb3csIHRoYXQmIzM5O3MgdXNlZnVsLgoKU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIHBsYXRmb3JtIHRoYXQgdXNlcyBgc3RtbWFjYD8KClllcyEgRXVyZWthISBRRU1VICpkb2VzKiBlbXVsYXRlIGBody9uZXQvZGVzaWdud2FyZS5jYCEgTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYGRlc2lnbndhcmUuY2AgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgKmlzKiB0aGUgYHN0bW1hY2AgaGFyZHdhcmUsIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBjYWxsZWQgYHN0bW1hY2AuCgpJbiB0aGUga2VybmVsLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYCB3aWxsIGhhdmUgdGhlIFBDSSBJRHMsIHNvIEkmIzM5O2xsIGNvcnJlbGF0ZSB0aG9zZSB0byBiZSBzdXJlLCBidXQgaXQgbG9va3MgcHJvbWlzaW5nLiBXaXRoIGEgYml0IG9mIGx1Y2ssIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIHRlc3RhYmxlIGluIFFFTVUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0RXTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGZvciBQQ0kgSURzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgUENJIElEcyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBzaXR1YXRpb24sIHNvIEkmIzM5O20gZ29pbmcgdG8gaGVhZCBzdHJhaWdodCBpbnRvIHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiB0aGVyZSBhbmQgaG93IHRoZSBkcml2ZXIgaXMgaGFuZGxpbmcgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBJRCB0YWJsZXMg4oCTIHZlbmRvciBJRHMsIGRldmljZSBJRHMsIHN1YnN5c3RlbSBJRHMsIGFuZCBzdWJzeXN0ZW0gdmVuZG9yIElEcyDigJMgdGhhdCB0aGUgZHJpdmVyIHVzZXMgdG8gcmVjb2duaXplIHRoZSBoYXJkd2FyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucyB0aGF0IGJpbmQgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBzaWxpY29uLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQgYW5kIGNvbW1lbnRlZDsgdGhhdCBhbHdheXMgbWFrZXMgdGhpbmdzIGVhc2llci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUUVNVSBOZXR3b3JrIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIFFFTVUgc2l0dWF0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgYGh3L25ldC9kZXNpZ253YXJlLmNgICptaWdodCogYmUgaW1wbGVtZW50ZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2UuIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCYjMzk7cyBzZWUuLi4gY2FuIHdlIGV2ZW4gZnV6eiBgc3RtbWFjYD8gSSYjMzk7ZCBleHBlY3QgU3l6a2FsbGVyIHRvIGhhdmUgY292ZXJhZ2UgZm9yIHNvbWV0aGluZyBsaWtlIHRoYXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgZG9lcyBTeXprYWxsZXIgaGF2ZSBhbnkgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3RtbWFjYD8gSG1tLCBpdCYjMzk7cyBub3QgYSBnaXZlbi4gU3l6a2FsbGVyIHVzdWFsbHkgaGFuZGxlcyBuZXR3b3JrIGRldmljZSBmdXp6aW5nIHdpdGggYHR1bi90YXBgIG9yIGBuZXRsaW5rYCwgYnV0IGRpcmVjdCBoYXJkd2FyZSBkcml2ZXIgZnV6emluZyByZWFsbHkgb25seSBoYXBwZW5zIGZvciBQQ0ksIFVTQiBkZXZpY2VzLCBvciBpZiB0aGVyZSBhcmUgZXhwbGljaXQgU3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgaXQuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kISBgc3RtbWFjYCAqaXMqIGEgUENJIGRldmljZSwgaXNuJiMzOTt0IGl0PyAoMHgxMTA4LCAweDcxMDIsIEkgcmVjYWxsIHNlZWluZyB0aG9zZSB2ZW5kb3IvZGV2aWNlIElEcyBiZWZvcmUpLiBPa2F5LCB0aGF0JiMzOTtzIHByb21pc2luZyEgU3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgb3Igc2ltaWxhciBQQ0ktc3BlY2lmaWMgc3lzY2FsbHMuIFRoYXQmIzM5O3MgYSBnb29kIGxlYWQuCgpOb3csIGxldCYjMzk7cyBjb25uZWN0IHRoZSBkb3RzLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0LCBpcyBpdCBmb3IgYGR3bWFjNF9kbWEuY2A/IFRoYXQmIzM5O3MgdGhlIGtleS4gRG9lcyBgZHdtYWM0YCBnZXQgdXNlZCBpbiBhIFBDSSBjb250ZXh0PyBJJiMzOTtsbCBuZWVkIHRvIGdvIGxvb2sgYXQgYHN0bW1hY19wY2kuY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBsaW5rIHRvIHRoYXQgYGR3bWFjNGAgY29kZS4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY3J1Y2lhbCBjbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWM0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBzdG1tYWNgIGRyaXZlciBpcyB1c2luZyBQQ0kuIFRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGxpa2VseSB0aGUgY29yZSBQQ0kgZHJpdmVyIGZpbGUsIHdoaWNoLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgcHJvYmFibHkgYHN0bW1hY19wY2kuY2AuIE15IGluc3RpbmN0IGlzIHRvIG9wZW4gdGhhdCBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIElEIG1hdGNoaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnkgYW5kIGludGVycnVwdCBsaW5lcywgdXN1YWxseSksIGFueSBzcGVjaWZpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3MsIGFuZCBvZiBjb3Vyc2UsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBtYW5hZ2VzIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIGJhc2VkIG9uIHRoZSBQQ0kgaW5mb3JtYXRpb24gaXQgZmluZHMuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBtYXAgb3V0IHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIGhhbmRsaW5nIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJiMzOTtzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhc3N1bWluZyBpdCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBQQ0kgZHJpdmVyIG1vZGVsLCBidXQgdmVyaWZ5aW5nIHRob3NlIGFzc3VtcHRpb25zIGVhcmx5IG9uIHdpbGwgc2F2ZSB0aW1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEdNQUM1IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc25wc19nbWFjNV9wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgdGhlIG5hbWUgcHJldHR5IGNsZWFybHkgcGVncyBpdCB0byB0aGUgR01BQzUgY29udHJvbGxlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgR01BQzXigKYgbm93LCBkb2VzbiYjMzk7dCB0aGF0IHV0aWxpemUgdGhlIGBkd21hYzRgIGNvcmU/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbm5lY3Rpb24uCgpTaW5jZSBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGVmYXVsdCBzZXR0aW5ncywgSSBzaG91bGQgY2hlY2sgdGhlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc3RydWN0dXJlLiBUaGF0IGxpa2VseSBjb250YWlucyB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcy4gTGV0IG1lIGRlbHZlIGludG8gdGhhdCBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCB3aWxsIGNvbmZpcm0gb3IgZGVueSBteSBzdXNwaWNpb24gdGhhdCBHTUFDNSBpcyBhbiBpbnN0YW5jZSBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIDQgY29yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c25wc19nbWFjNV9kZWZhdWx0X2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTQ6c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01NS1cdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAzOlx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA0LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIEZpbGUqKgoKQWxyaWdodCwgdGhlIGRpcmVjdGl2ZSBpcyBjbGVhci4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4uIFRoZSBpbW1lZGlhdGUgY3VlIGlzIHRvIGV4YW1pbmUgdGhlIGZpbGUgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gLSAmIzM0O3NucHMmIzM0OyBzdWdnZXN0cyBTaW5nbGUgTnVjbGVvdGlkZSBQb2x5bW9ycGhpc21zIGRhdGEsICYjMzQ7Z21hYzUmIzM0OyBwcm9iYWJseSBkZW5vdGVzIGEgc3BlY2lmaWMgZXhwZXJpbWVudCwgbWV0aG9kb2xvZ3ksIG9yIHZlcnNpb24sIGFuZCAmIzM0O2RlZmF1bHRfZGF0YSYjMzQ7IGxpa2VseSBpbmRpY2F0ZXMgZWl0aGVyIHRoZSByYXdlc3QgZm9ybSBvciBhIGN1cmF0ZWQgYmFzZWxpbmUgZGF0YXNldC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgZmlsZSBmb3JtYXQgLSBpcyBpdCBhIFZDRiwgYSBwbGFpbiB0ZXh0IHRhYmxlLCBhIGJpbmFyeSBmb3JtYXQ/IFRoZSAmIzM5O2RlZmF1bHQmIzM5OyBwYXJ0IGltcGxpZXMgYSBzdGFydGluZyBwb2ludCwgc28gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHByZXByb2Nlc3Npbmcgc3RlcHMgdGhhdCBoYXZlIGxpa2VseSBiZWVuIGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGZvdW5kYXRpb25hbCBmb3IgYW55IGRvd25zdHJlYW0gYW5hbHlzaXMuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG1ldGFkYXRhLCB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgYXNzb2NpYXRlZCB3aXRoIGl0LiBGcm9tIHRoZSBuYW1lIGFsb25lLCBJIGNhbiBzdGFydCBmb3JtaW5nIGh5cG90aGVzZXMgYWJvdXQgdGhlIGFuYWx5dGljYWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU0Olx0c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgNTU6XHRcdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiAgNTY6XHR7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG4gIDYwOlx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG4gIDYxOlx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgNjI6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuICA2MzpcdFx0cGxhdC1cdTAwM2VwbXQgPSB0cnVlO1xuICA2NDpcdFxuICA2NTpcdFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXG4gIDY2Olx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2UgPSA0O1xuICA2NzpcdFx0cGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcbiAgNjg6XHRcbiAgNjk6XHRcdHBsYXQtXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XG4gIDcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7XG4gIDcxOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDcyOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcbiAgNzM6XHRcdFx0aWYgKGkgXHUwMDNlIDApXG4gIDc0Olx0XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XG4gIDc1Olx0XHR9XG4gIDc2Olx0XG4gIDc3Olx0XHRwbGF0LVx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XG4gIDc4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KVxuICA3OTpcdFx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xuICA4MDpcdFxuICA4MTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA4MjpcdFx0cGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4gIDgzOlx0XG4gIDg0Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJsID0gMzI7XG4gIDg1Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJseDggPSB0cnVlO1xuICA4NjpcdFxuICA4NzpcdFx0LyogQXhpIENvbmZpZ3VyYXRpb24gKi9cbiAgODg6XHRcdHBsYXQtXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBsYXQtXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XG4gIDg5Olx0XHRpZiAoIXBsYXQtXHUwMDNlYXhpKVxuICA5MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgOTE6XHRcbiAgOTI6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XG4gIDkzOlx0XHRwbGF0LVx1MDAzZWF4aS1cdTAwM2VheGlfcmRfb3NyX2xtdCA9IDMxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzgzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFN5emthbGxlciBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSBzZWUgdGhlIGFzc2lnbm1lbnQ6IGBwbGF0LSZndDtjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O2AuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgZHdtYWM0YC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQmIzM5O3MgdGhlIFBDSSBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEFuZCBJIHJlY2FsbCB0aGF0IGZpbGUgYmVpbmcgY29tcGlsZWQgdW5kZXIgYENPTkZJR19TVE1NQUNfUENJYC4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiAqY2FuKiBzeXprYWxsZXIgZnV6eiB0aGlzPyBXZWxsLCBzeXprYWxsZXIgKmRvZXMqIGZ1enogUENJIGRldmljZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IGluIGZhdm9yLiBCdXQgZG9lcyBpdCBmdXp6ICpzcGVjaWZpY2FsbHkqIHRoZSBgc3RtbWFjYCBkcml2ZXI/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVpdGhlciBgQ09ORklHX1NUTU1BQ19FVEhgIChmb3IgdGhlIEV0aGVybmV0IGRyaXZlciBpbiBnZW5lcmFsKSBvciBgQ09ORklHX1NUTU1BQ19QQ0lgIHNwZWNpZmljYWxseS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgdGhlIGRlYWwgaXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4gIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MzAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipQcmlvcml0aXppbmcgU2VjdXJpdHk6IEluaXRpYXRpbmcgUENJIENvbXBsaWFuY2UgUmV2aWV3KioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0aGUgcmlnaHQgcGF0aC4gR2l2ZW4gdGhlIHNlbnNpdGl2ZSBuYXR1cmUgb2YgdGhlIHByb2plY3QgYW5kIHRoZSBkYXRhIGludm9sdmVkLCBJIG5lZWQgdG8gbWFrZSBQQ0kgY29tcGxpYW5jZSB0aGUgdmVyeSBmaXJzdCBzdG9wIG9uIHRoZSBjaGVja2xpc3QuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNhcmRob2xkZXIgZGF0YSBpbiBhbnkgd2F5LCBzaGFwZSwgb3IgZm9ybSwgUENJIGlzIGdvaW5nIHRvIGJlIGEgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1pbmQgb24gdGhlIHNjb3BlLCBhbmQgdGhhdCB3aWxsIHNldCB0aGUgZ3JvdW5kd29yayBmb3IgYWxsIGZ1dHVyZSBkZXNpZ24gYW5kIGRldmVsb3BtZW50IGNob2ljZXMuIFNvLCBsZXTigJlzIGJlZ2luIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBQQ0kgcmV2aWV3IHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxhbmRzY2FwZSBhaGVhZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5ODgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBDb25maWd1cmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhdCBwbGF5IGhlcmUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgdGhlIGtleSBmbGFncyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhvc2Ugc2V0dGluZ3MgYWN0dWFsbHkgaW5mbHVlbmNlIHRoZSBidWlsZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBgZHdtYWM0X2RtYS5jYCBmaWxlIGlzIGdldHRpbmcgY29tcGlsZWQgd2hlbiB0aGUgYFNUTU1BQ19FVEhgIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIHRoYXQgSSBuZWVkIHRvIGFuc3dlci4gSSBzdXNwZWN0IHRoZSBhbnN3ZXIgaXMgcmVsYXRlZCB0byBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzb21lIG90aGVyIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd21hYzRfZG1hLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zPXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNi1cdCAgICAgIG1tY19jb3JlLm8gc3RtbWFjX2h3dHN0YW1wLm8gc3RtbWFjX3B0cC5vIGR3bWFjNF9kZXNjcy5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NzpcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTgtXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNsZWFybHkgYmVsb25ncyB3aXRoaW4gdGhlIGBzdG1tYWMtb2Jqc2AgY29udGV4dDsgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBkZWluaXRfY2hhbmAgZnVuY3Rpb24gdG8gdGhlIGBkd21hYzRfZG1hX29wc2AgYW5kIGBkd21hYzQxMF9kbWFfb3BzYCBzdHJ1Y3R1cmVzLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgaW5kaWNhdG9yLgoKTm93LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBtb2RpZnlpbmcgdGhlIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYHN0bW1hY19zdG9wX2FsbF9kbWFgIG5vdyBjYWxscyB0aGlzIG5ld2x5IGFkZGVkIGBzdG1tYWNfZGVpbml0X2NoYW5gIGZ1bmN0aW9uLiBXaGljaCB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBtb3JlIHRob3JvdWdobHkgc2h1dHRpbmcgZG93biBhIGNoYW5uZWwuCgpCdXQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24gaXMgZXZlbiBhY3RpdmVseSB1c2VkIGluIHRoZSBjb2RlLiBJIG11c3QgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBmdW5jdGlvbiBjcml0aWNhbCwgdXNlZCBvbmx5IGluIHJhcmUgY2FzZXMsIG9yIHBvdGVudGlhbGx5IGRlYWQgY29kZT8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc3RvcF9hbGxfZG1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjU0MD1zdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNTU0OiAqIHN0bW1hY19zdG9wX2FsbF9kbWEgLSBzdG9wIGFsbCBSWCBhbmQgVFggRE1BIGNoYW5uZWxzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTUtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1OTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjQyPXN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyNjAtXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyNjE6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwMT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzExOC1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMTk6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTIwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODE4MT1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNC1cdC8qIFN0b3AgVFgvUlggRE1BICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyMDU6XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY2NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IGl0LiBUaGlzIHBhdGNoIGxvb2tzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdG91Y2hlcyBzb21lIGtleSBjbGVhbnVwIGZ1bmN0aW9uczogYGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxgLCBgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsYCwgYW5kIGBzdG1tYWNfc3RvcF9hbGxfZG1hYC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgaW50ZXJydXB0IGhhbmRsaW5nIGR1cmluZyBpbnRlcmZhY2Ugc2h1dGRvd24gYW5kIHN1c3BlbmQsIHNvIGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggY29udHJvbCBwYXRoIG9wZXJhdGlvbnMgcmF0aGVyIHRoYW4gaGlnaC1mcmVxdWVuY3kgZGF0YSBwYXRocy4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGVkIGR1cmluZyBpbnRlcmZhY2UgYnJpbmctdXAgYW5kIGJyaW5nLWRvd24gLSB2ZXJ5IGNvbW1vbiBvcGVyYXRpb25zIGZvciBmdXp6aW5nLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aGluIGBfX3N0bW1hY19yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBuZG9fc3RvcGApLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGR1cmluZyBzdXNwZW5kLCBtYWtpbmcgdGhlbSBlYXNpbHkgcmVhY2hhYmxlLiBTaW5jZSBgc3RtbWFjYCBzdXBwb3J0cyBQQ0ksIEkgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBgc3l6X3BjaV92cGNpYCBjYWxsIHRvIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBhbmQgYnJpbmcgdGhlIGludGVyZmFjZSB1cCBhbmQgZG93biByZXBlYXRlZGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBzeXprYWxsZXIgZnV6emluZyB0ZWNobmlxdWUuIEFkZGl0aW9uYWxseSwgSSBrbm93IHRoYXQgYHN0bW1hY2AgaXMgYSBuZXR3b3JrIGRldmljZSwgYW5kIHN5emthbGxlciYjMzk7cyBjb21tb24gb3BlcmF0aW9ucyBpbmNsdWRlIGJyaW5naW5nIG5ldHdvcmsgaW50ZXJmYWNlcyB1cCBhbmQgZG93biwgc28gSSYjMzk7bGwgc2VlIGxvdHMgb2YgY292ZXJhZ2UuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJIHNlZSBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgIGFyZSBjcml0aWNhbC4gSSBjaGVja2VkIHRoZSBLY29uZmlnIGFuZCB2ZXJpZmllZCB0aGF0IGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBTVE1NQUNfRVRIYCwgc28gYm90aCBhcmUgbmVjZXNzYXJ5LiBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSB0byB0aGUgY29uZmlnLgoKVGhlIGNvcmUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIHRoZSBvbmVzIHRoZSBwYXRjaCBtb2RpZmllcywgc3BlY2lmaWNhbGx5IGBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsYCwgYGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbGAsIGFuZCBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIEkmIzM5O3ZlIHZlcmlmaWVkIHRoZWlyIGV4YWN0IG5hbWVzLCBhbmQgdGhleSYjMzk7cmUgYWxsIHJlYWNoYWJsZSB2aWEgY29udHJvbCBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIHZlcnkgYXBwcm9wcmlhdGUgZm9yIGZ1enppbmcuIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBpcyBhIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIHRhcmdldC4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBwYXRjaCYjMzk7cyBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAgaW1wbGVtZW50YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgY2xlYXJpbmcgaW50ZXJydXB0IGVuYWJsZSBtYXNrcyBmb3IgRE1BIGNoYW5uZWxzLCB3aGljaCBpcyBsaWtlbHkgZml4aW5nIGFuIGludGVycnVwdC1yZWxhdGVkIGJ1ZyBkdXJpbmcgaW50ZXJmYWNlIHNodXRkb3duIG9yIHN1c3BlbmQuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2Ugc3VnZ2VzdHMgdGhhdCBmdXp6aW5nIHRoZXNlIGludGVycnVwdC1yZWxhdGVkIG9wZXJhdGlvbnMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIG1lbW9yeSBzYWZldHkgb3Igb3RoZXIgaXNzdWVzLgoKRmluYWxseSwgd2hpbGUgSSAqY291bGQqIGFsc28gaW5jbHVkZSBgRFdNQUNfR0VORVJJQ2AgYW5kIGBTVE1NQUNfUExBVEZPUk1gIGp1c3QgaW4gY2FzZSwgSSB0aGluayBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgc3VmZmljaWVudCBiZWNhdXNlIG9mIHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggYHN5el9wbGF0Zm9ybV9kZXZpY2VgIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzLiBIb3dldmVyLCBzaW5jZSBgU1RNTUFDX1BMQVRGT1JNYCBkZWZhdWx0cyB0byB5ZXMsIEkgc2hvdWxkIGJlIGNvdmVyZWQuIEkmIzM5O20gZ29pbmcgdG8gcHJvY2VlZCB3aXRoIGZ1enppbmcgdXNpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYW5kIHNlZSBob3cgaXQgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgU1RNTUFDX1BDSSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfUENJYC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBQQ0ktYmFzZWQgU1RNaWNyb2VsZWN0cm9uaWNzIEdpZ2FiaXQgRXRoZXJuZXQgTUFDLCBzbyBhIHRob3JvdWdoIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgY3J1Y2lhbCBiZWZvcmUgYW55IG1ham9yIG1vZGlmaWNhdGlvbnMgb3IgaW50ZWdyYXRpb25zLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcHMgd2l0aDoKCiogICAqKlRoZSBQQ0kgc3Vic3lzdGVtOioqIFNwZWNpZmljYWxseSwgd2hhdCBkcml2ZXIgbW9kZWxzIGFyZSBhc3N1bWVkPyBJcyBpdCB1dGlsaXppbmcgdGhlIHN0YW5kYXJkIGBwY2lfZHJpdmVyYCBmcmFtZXdvcmssIG9yIGFyZSB0aGVyZSBjdXN0b20gaW50ZXJhY3Rpb25zPyBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGhhbmRsZXMgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIChNU0kgdnMuIGxlZ2FjeSksIGFuZCBwb3dlciBtYW5hZ2VtZW50IGhvb2tzLCBhbW9uZyBvdGhlciB0aGluZ3MuIEkgd2lsbCBiZSBsb29raW5nIGludG8gdGhlIGRldmljZSB0cmVlIG9yIEFDUEkgc2V0dXAuCiogICAqKlRoZSBTVE1NQUMgY29yZSBkcml2ZXI6KiogV2hhdCB2ZXJzaW9uIG9mIHRoZSBjb3JlIGlzIGl0IGxpbmtlZCB0bz8gQW55IHNwZWNpZmljIHBhdGNoZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFwcGxpZWQgYXQgdGhlIGNvcmUgbGV2ZWwgdGhhdCBpbXBhY3QgdGhlIFBDSSB2YXJpYW50PyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgZmVhdHVyZSBzZXQgc3VwcG9ydGVkIGJ5IHRoaXMgcGFydGljdWxhciBpbnN0YW50aWF0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIHNvIEkgY2FuIHByZWRpY3QgZWRnZSBjYXNlcy4KKiAgICoqTmV0d29ya2luZyBzdGFjayBjb21wb25lbnRzOioqIFRoZSBpbnRlZ3JhdGlvbiBwb2ludHMgd2l0aCB0aGUgYG5ldGRldmAgQVBJIGFyZSBvYnZpb3VzLCBidXQgYXJlIHRoZXJlIGFueSB1bnVzdWFsIGhvb2tzIG9yIHdvcmthcm91bmRzIG5lY2Vzc2FyeT8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcyAoY2hlY2tzdW0sIFRTTywgZXRjLikgYmVpbmcgdXRpbGl6ZWQsIGFuZCBpZiBzbywgaG93IGFyZSB0aGV5IG1hbmFnZWQgaW4gdGhlIFBDSSBjb250ZXh0PyBBcmUgdGhlcmUgYW55IGZsb3cgY29udHJvbCBvciBRb1MgZmVhdHVyZXMgZW5hYmxlZD8KKiAgICoqSGFyZHdhcmUgc3BlY2lmaWNzOioqIE9mIGNvdXJzZSwgdGhlIHNwZWNpZmljIHNpbGljb24gcmV2aXNpb24gaXMgcGFyYW1vdW50LiBBcmUgdGhlcmUga25vd24gZXJyYXRhIG9yIGhhcmR3YXJlIHF1aXJrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGBTVE1NQUNfUENJYCB2YXJpYW50PyBJIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhc2hlZXRzIGFuZCBhbnkgYXZhaWxhYmxlIGVycmF0YSBzaGVldHMuCiogICAqKk90aGVyIGRyaXZlcnM6KiogSXMgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdCBvciBkZXBlbmRlbmN5IG9uIG90aGVyIGRyaXZlcnMgb24gdGhlIHNhbWUgUENJIGJ1cz8gT3IgYW55IG90aGVyIGRldmljZXMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBjb250cm9sbGVyPwoKVWx0aW1hdGVseSwgbXkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIHBvcnRhYmlsaXR5LCBtYWludGFpbmFiaWxpdHksIGFuZCBmdXR1cmUgdXBkYXRlcy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBzZXQgbWUgdXAgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgYW55IHRhc2tzIHJlbGF0ZWQgdG8gYFNUTU1BQ19QQ0lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgU1RNTUFDX1BDSWAgb3B0aW9uIHdhcyBjb250aW5nZW50IG9uIGBTVE1NQUNfRVRIYC4gQnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSB0aGUgY2FzZSwgYW5kIEkga25vdyB0aGVzZSBkcml2ZXJzIGluc2lkZSBhbmQgb3V0LiBBaCwgcmlnaHQuIEl0JiMzOTtzIGNsZXZlcmx5IHR1Y2tlZCAqd2l0aGluKiBhbiBgaWYgU1RNTUFDX0VUSGAgYmxvY2suIFRoaXMgbWVhbnMgdGhlIGRlcGVuZGVuY3kgaXMgaGFuZGxlZCBpbmxpbmUsIGFzIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgbGluZSAxOCBvZiB0aGUgYEtjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmRpdGlvbmFsIGxvZ2ljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBibG9jay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY2NQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gTWF6ZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBjdXJyZW50IGZvY3VzIGlzIGRlZmluaXRlbHkgd2l0aGluIGFuIGAjaWYgU1RNTUFDX0VUSGAgYmxvY2suIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGBTVE1NQUNfRVRIYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSBjb21waWxlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUgYXNzdW1wdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgb3RoZXIgb3B0aW9ucywgYW5kIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaWYgYFNUTU1BQ19MSUJQQ0lgIGlzIGRlZmluZWQgb3IgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19MSUJQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTk1CgkJCQkJCQlvdXRwdXQ6IDE4MQoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgYWJvdXQgYWRkaW5nIG5ldyBETUEgY2hhbm5lbCBkZWluaXRpYWxpemF0aW9uIGxvZ2ljIHRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRhcmdldGluZyB0aGUgRFdNQUM0IGFuZCA0LjEwIGNvcmVzLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4KCkkgc2VlIHRoYXQgYFNUTU1BQ19QQ0lgIGlzIHRoZSBoaWRkZW4gY29uZmlndXJhdGlvbiB0aGF0IG1hdHRlcnMgaGVyZS4gU28sIHRvIGVuc3VyZSB0aGlzIG5ldyBsb2dpYyBpcyBlbmFibGVkIGFuZCByZWxldmFudCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpOb3csIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsYCwgYGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbGAsIGFuZCBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHRvIHNjcnV0aW5pemUuIE15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhdm9pZGluZyByZWdyZXNzaW9ucyBhbmQgY3Jhc2hlcywgZXNwZWNpYWxseSBkdXJpbmcgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kLiBUaGF0JiMzOTtzIHdoZXJlIGZ1enppbmcgbmVlZHMgdG8gYmUgZm9jdXNlZDogdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBwYXRocyB0byB0ZXN0IHRoZSByb2J1c3RuZXNzIG9mIHRoaXMgbmV3IGRlaW5pdGlhbGl6YXRpb24gbG9naWMuCgpJIGFsc28gbm90aWNlZCBgc3RtbWFjX2RlaW5pdF9jaGFuYCwgYnV0IGl0JiMzOTtzIGEgbWFjcm87IEkgd2lsbCBub3QgY291bnQgdGhpcyBhcyBhIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMgYW5kIG1vdmUgb24uCkkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O2R3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfc3RvcF9hbGxfZG1hJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7ZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdG9wX2FsbF9kbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjM1Ljk1MjgwNjU4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU2MjIyNzAzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxcIixcbiAgICBcImR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjM1Ljk1MjgxMDQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTczNjY3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNDM0ZDliNzgyM2Q2MmIxNmVkMTU4NmU1NzhiNTdiNWE3M2FhZTMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDE4IDE2OjI0OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xcbmluZGV4IDgyOWEyM2JkYWQwMWY4Li4yM2ZmZTFhZGNkMGQzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcXG5AQCAtMTA2LDYgKzEwNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdCAgICAgICBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vkd21hYzRfYWRkcnM7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFxuK1xcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuK1xcdHZhbHVlIFxcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTSztcXG4rXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsIHUzMiBjaGFuKVxcbkBAIC0xMjUsNiArMTM2LDE3IEBAIHN0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHQgICAgICAgaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vkd21hYzRfYWRkcnM7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFxuK1xcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XFxuK1xcdHZhbHVlIFxcdTAwMjY9IH5ETUFfQ0hBTl9JTlRSX0RFRkFVTFRfTUFTS180XzEwO1xcbitcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXFxuIHtcXG5AQCAtNTQ4LDYgKzU3MCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzRfZG1hX29wcyA9IHtcXG4gXFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcXG4gXFx0LmluaXQgPSBkd21hYzRfZG1hX2luaXQsXFxuIFxcdC5pbml0X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfY2hhbm5lbCxcXG4rXFx0LmRlaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCxcXG4gXFx0LmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLFxcbiBcXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXFxuIFxcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcXG5AQCAtNTc3LDYgKzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0ge1xcbiBcXHQucmVzZXQgPSBkd21hYzRfZG1hX3Jlc2V0LFxcbiBcXHQuaW5pdCA9IGR3bWFjNF9kbWFfaW5pdCxcXG4gXFx0LmluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9pbml0X2NoYW5uZWwsXFxuK1xcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcXG4gXFx0LmluaXRfcnhfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9yeF9jaGFuLFxcbiBcXHQuaW5pdF90eF9jaGFuID0gZHdtYWM0X2RtYV9pbml0X3R4X2NoYW4sXFxuIFxcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggZTYzMTdiOTRmZmY3ZDQuLjA0ZGFmZWMwMjFiNGY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbkBAIC0xNzAsNiArMTcwLDggQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcXG4gXFx0dm9pZCAoKmluaXQpKHZvaWQgX19pb21lbSAqaW9hZGRyLCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpO1xcbiBcXHR2b2lkICgqaW5pdF9jaGFuKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pO1xcbitcXHR2b2lkICgqZGVpbml0X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuK1xcdFxcdFxcdCAgICB1MzIgY2hhbik7XFxuIFxcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLFxcbiBcXHRcXHRcXHQgICAgIGRtYV9hZGRyX3QgcGh5LCB1MzIgY2hhbik7XFxuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xcbiBcXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdCwgX19hcmdzKVxcbiAjZGVmaW5lIHN0bW1hY19pbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4gXFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXFxuKyNkZWZpbmUgc3RtbWFjX2RlaW5pdF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXFxuICNkZWZpbmUgc3RtbWFjX2luaXRfcnhfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbiBcXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdF9yeF9jaGFuLCBfX3ByaXYsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggMmEwZDdlZmY4OGQzZmYuLmFmMjlhNTBkZGI4OTcyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI1NjAsNiArMjU2MCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG4gXFx0dTggdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xcbitcXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XFxuIFxcdHU4IGNoYW47XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG5AQCAtMjU2Nyw2ICsyNTY4LDkgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3N0b3BfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4gXFx0XFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xcbitcXG4rXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKylcXG4rXFx0XFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDozNi40MTA3ODMzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUxNjQyODM5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxcIixcbiAgICBcImR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IERNQSBjaGFubmVsIGRlaW5pdGlhbGl6YXRpb24gbG9naWMgdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgRFdNQUM0LzQuMTAgY29yZXMuIFRoaXMgbG9naWMgaXMgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSAoZS5nLiwgR01BQzUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW50ZXJmYWNlIHRlYXJkb3duIGFuZCBzdXNwZW5kIHBhdGhzIHRvIGVuc3VyZSB0aGUgbmV3IERNQSBkZWluaXQgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTQzNGQ5Yjc4MjNkNjJiMTZlZDE1ODZlNTc4YjU3YjVhNzNhYWUzMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDE2OjI0OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jXG5pbmRleCA4MjlhMjNiZGFkMDFmOC4uMjNmZmUxYWRjZDBkMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuY1xuQEAgLTEwNiw2ICsxMDYsMTcgQEAgc3RhdGljIHZvaWQgZHdtYWM0X2RtYV9pbml0X2NoYW5uZWwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ICAgICAgIGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBkd21hYzRfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZHdtYWM0X2FkZHJzICpkd21hYzRfYWRkcnMgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZHdtYWM0X2FkZHJzO1xuK1x0dTMyIHZhbHVlO1xuK1xuK1x0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbitcdHZhbHVlIFx1MDAyNj0gfkRNQV9DSEFOX0lOVFJfREVGQVVMVF9NQVNLO1xuK1x0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZywgdTMyIGNoYW4pXG5AQCAtMTI1LDYgKzEzNiwxNyBAQCBzdGF0aWMgdm9pZCBkd21hYzQxMF9kbWFfaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdCAgICAgICBpb2FkZHIgKyBETUFfQ0hBTl9JTlRSX0VOQShkd21hYzRfYWRkcnMsIGNoYW4pKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdFx0dm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBkd21hYzRfYWRkcnMgKmR3bWFjNF9hZGRycyA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vkd21hYzRfYWRkcnM7XG4rXHR1MzIgdmFsdWU7XG4rXG4rXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIERNQV9DSEFOX0lOVFJfRU5BKGR3bWFjNF9hZGRycywgY2hhbikpO1xuK1x0dmFsdWUgXHUwMDI2PSB+RE1BX0NIQU5fSU5UUl9ERUZBVUxUX01BU0tfNF8xMDtcbitcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgRE1BX0NIQU5fSU5UUl9FTkEoZHdtYWM0X2FkZHJzLCBjaGFuKSk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxuIHtcbkBAIC01NDgsNiArNTcwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNF9kbWFfb3BzID0ge1xuIFx0LnJlc2V0ID0gZHdtYWM0X2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHdtYWM0X2RtYV9pbml0LFxuIFx0LmluaXRfY2hhbiA9IGR3bWFjNF9kbWFfaW5pdF9jaGFubmVsLFxuK1x0LmRlaW5pdF9jaGFuID0gZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbkBAIC01NzcsNiArNjAwLDcgQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjNDEwX2RtYV9vcHMgPSB7XG4gXHQucmVzZXQgPSBkd21hYzRfZG1hX3Jlc2V0LFxuIFx0LmluaXQgPSBkd21hYzRfZG1hX2luaXQsXG4gXHQuaW5pdF9jaGFuID0gZHdtYWM0MTBfZG1hX2luaXRfY2hhbm5lbCxcbitcdC5kZWluaXRfY2hhbiA9IGR3bWFjNDEwX2RtYV9kZWluaXRfY2hhbm5lbCxcbiBcdC5pbml0X3J4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfcnhfY2hhbixcbiBcdC5pbml0X3R4X2NoYW4gPSBkd21hYzRfZG1hX2luaXRfdHhfY2hhbixcbiBcdC5heGkgPSBkd21hYzRfZG1hX2F4aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2Q0Li4wNGRhZmVjMDIxYjRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMTcwLDYgKzE3MCw4IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XG4gXHR2b2lkICgqaW5pdCkodm9pZCBfX2lvbWVtICppb2FkZHIsIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZyk7XG4gXHR2b2lkICgqaW5pdF9jaGFuKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnLCB1MzIgY2hhbik7XG4rXHR2b2lkICgqZGVpbml0X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgIHUzMiBjaGFuKTtcbiBcdHZvaWQgKCppbml0X3J4X2NoYW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcsXG4gXHRcdFx0ICAgICBkbWFfYWRkcl90IHBoeSwgdTMyIGNoYW4pO1xuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXQsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19pbml0X2NoYW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgaW5pdF9jaGFuLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19kZWluaXRfY2hhbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkZWluaXRfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF9yeF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGluaXRfcnhfY2hhbiwgX19wcml2LCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfaW5pdF90eF9jaGFuKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uYWYyOWE1MGRkYjg5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2MCw2ICsyNTYwLDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3N0b3BfYWxsX2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0dTggcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7XG4rXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XG4gXHR1OCBjaGFuO1xuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbkBAIC0yNTY3LDYgKzI1NjgsOSBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4gXHRcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKylcbitcdFx0c3RtbWFjX2RlaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbiB9XG4gXG4gLyoqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDozNi40MTA3ODQ5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTk3Mjg0MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgRE1BIERlLWluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgaXQncyB0b3VjaGluZyBgZHdtYWM0X2RtYS5jYCwgYGh3aWYuaGAsIGFuZCBgc3RtbWFjX21haW4uY2Agd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQgYWRkcyBhIGBkZWluaXRfY2hhbmAgY2FsbGJhY2sgdG8gdGhlIGBzdG1tYWNfZG1hX29wc2Agc3RydWN0IGFuZCBpbXBsZW1lbnRzIGl0IGZvciBgZHdtYWM0YCBhbmQgYGR3bWFjNDEwYCBETUEgb3BlcmF0aW9ucy4gVGhlIHBhdGNoIGFsc28gZW5zdXJlcyB0aGlzIGNhbGxiYWNrIGdldHMgY2FsbGVkIGR1cmluZyBgc3RtbWFjX3N0b3BfYWxsX2RtYWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5gc3RtbWFjYCBpcywgYXMgSSByZWNhbGwsIHRoZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgMTAvMTAwLzEwMDAgRXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSBcIkVRT1NcIiBvbmVzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBRRU1VIChvciBhbnkgcmVhZGlseSBhdmFpbGFibGUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm0pIGVtdWxhdGUgdGhpcyBoYXJkd2FyZT9cblxuTGV0J3Mgc2Vl4oCmIFFFTVUgaGFzIGVtdWxhdGVkIGhhcmR3YXJlIGZvciBhIGxvdCBvZiBuZXR3b3JrIGludGVyZmFjZXMsIGluY2x1ZGluZyBgaW14X2ZlY2AsIGBjYWRlbmNlX2dlbWAsIGBmdGdtYWMxMDBgLCBgbGFuOTExOGAsIGBzbWM5MWMxMTFgLCBgc3RlbGxhcmlzX2VuZXRgLCBhbmQgYHhnbWFjYCwgYnV0IHRoYXQgZG9lc24ndCBuZWNlc3NhcmlseSBtZWFuIGl0IHN1cHBvcnRzICp0aGlzKiBvbmUuIFdhaXQgYSBtaW51dGUuLi4gYHN0bW1hY2AgaXNuJ3QgU1RNaWNyb2VsZWN0cm9uaWNzIHNwZWNpZmljLCBpdCdzIGFjdHVhbGx5IFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykuIEFoYSFcblxuU28sIGRvZXMgUUVNVSBlbXVsYXRlIERXTUFDPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2VzLCBzZWFyY2hpbmcgZm9yIFBDSSBJRHMgb3IgcGxhdGZvcm0gZHJpdmVycyBhc3NvY2lhdGVkIHdpdGggYHN0bW1hY2AgdG8gZmluZCBpdCBpbiB0aGUgUUVNVSBzb3VyY2UgY29kZS4gUmVtZW1iZXIgdGhhdCBgc3RtbWFjYCBpcyB1c3VhbGx5IGZvdW5kIGluIEFSTS1iYXNlZCBTb0NzIGxpa2UgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgYW5kIHN1Y2gsIGFuZCBJIGJldCBzb21lIG9mIHRob3NlIHBsYXRmb3JtcyBhcmUgZW11bGF0ZWQuXG5cbkFscmlnaHQsIFFFTVUgZW11bGF0ZXMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgd2hpY2ggaXMgZm9yIHRoZSBBbGx3aW5uZXIgSDMuIElzIHRoYXQgdXNpbmcgYHN0bW1hY2A/IE5vLCBpdCBsb29rcyBsaWtlIGBzdW44aS1lbWFjYCBpcyBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgYHN0bW1hY2AgZHJpdmVyICppcyogdXNlZCBieSBhIFwiZHdtYWMtc3VuOGlcIi4gT2ghIFRoYXQncyBpdCEgYGR3bWFjLXN1bjhpYCBsb29rcyBsaWtlIGEgZnJvbnRlbmQgZm9yIGBzdG1tYWNgLiBOb3csIHRoYXQncyB1c2VmdWwuXG5cblNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqYW55KiBwbGF0Zm9ybSB0aGF0IHVzZXMgYHN0bW1hY2A/XG5cblllcyEgRXVyZWthISBRRU1VICpkb2VzKiBlbXVsYXRlIGBody9uZXQvZGVzaWdud2FyZS5jYCEgTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYGRlc2lnbndhcmUuY2AgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgKmlzKiB0aGUgYHN0bW1hY2AgaGFyZHdhcmUsIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBjYWxsZWQgYHN0bW1hY2AuXG5cbkluIHRoZSBrZXJuZWwsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgIHdpbGwgaGF2ZSB0aGUgUENJIElEcywgc28gSSdsbCBjb3JyZWxhdGUgdGhvc2UgdG8gYmUgc3VyZSwgYnV0IGl0IGxvb2tzIHByb21pc2luZy4gV2l0aCBhIGJpdCBvZiBsdWNrLCB0aGlzIHBhdGNoIHNob3VsZCBiZSB0ZXN0YWJsZSBpbiBRRU1VIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NDYuNjA4MDcwNzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTgzMDU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0RXTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NDYuNjY2NjYwNTIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NTQyNjEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGZvciBQQ0kgSURzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBQQ0kgSURzIGFyZSByZWxldmFudCB0byB0aGlzIHNpdHVhdGlvbiwgc28gSSdtIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZS4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gdGhlcmUgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGhhbmRsaW5nIFBDSSBkZXZpY2UgaWRlbnRpZmljYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBJRCB0YWJsZXMg4oCTIHZlbmRvciBJRHMsIGRldmljZSBJRHMsIHN1YnN5c3RlbSBJRHMsIGFuZCBzdWJzeXN0ZW0gdmVuZG9yIElEcyDigJMgdGhhdCB0aGUgZHJpdmVyIHVzZXMgdG8gcmVjb2duaXplIHRoZSBoYXJkd2FyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucyB0aGF0IGJpbmQgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBzaWxpY29uLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQgYW5kIGNvbW1lbnRlZDsgdGhhdCBhbHdheXMgbWFrZXMgdGhpbmdzIGVhc2llci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDo0OS43NTIwODg0NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MjQ3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDA6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAxOiNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI0OjQ5LjgwODUxNzY4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTE0Mzc0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRRU1VIE5ldHdvcmsgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIFFFTVUgc2l0dWF0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgYGh3L25ldC9kZXNpZ253YXJlLmNgICptaWdodCogYmUgaW1wbGVtZW50ZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2UuIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCdzIHNlZS4uLiBjYW4gd2UgZXZlbiBmdXp6IGBzdG1tYWNgPyBJJ2QgZXhwZWN0IFN5emthbGxlciB0byBoYXZlIGNvdmVyYWdlIGZvciBzb21ldGhpbmcgbGlrZSB0aGF0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIHF1aWNrbHkgY2hlY2s7IGRvZXMgU3l6a2FsbGVyIGhhdmUgYW55IHNwZWNpZmljIGRlc2NyaXB0aW9ucyBmb3IgYHN0bW1hY2A/IEhtbSwgaXQncyBub3QgYSBnaXZlbi4gU3l6a2FsbGVyIHVzdWFsbHkgaGFuZGxlcyBuZXR3b3JrIGRldmljZSBmdXp6aW5nIHdpdGggYHR1bi90YXBgIG9yIGBuZXRsaW5rYCwgYnV0IGRpcmVjdCBoYXJkd2FyZSBkcml2ZXIgZnV6emluZyByZWFsbHkgb25seSBoYXBwZW5zIGZvciBQQ0ksIFVTQiBkZXZpY2VzLCBvciBpZiB0aGVyZSBhcmUgZXhwbGljaXQgU3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgaXQuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQhIGBzdG1tYWNgICppcyogYSBQQ0kgZGV2aWNlLCBpc24ndCBpdD8gKDB4MTEwOCwgMHg3MTAyLCBJIHJlY2FsbCBzZWVpbmcgdGhvc2UgdmVuZG9yL2RldmljZSBJRHMgYmVmb3JlKS4gT2theSwgdGhhdCdzIHByb21pc2luZyEgU3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgb3Igc2ltaWxhciBQQ0ktc3BlY2lmaWMgc3lzY2FsbHMuIFRoYXQncyBhIGdvb2QgbGVhZC5cblxuTm93LCBsZXQncyBjb25uZWN0IHRoZSBkb3RzLiBUaGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQsIGlzIGl0IGZvciBgZHdtYWM0X2RtYS5jYD8gVGhhdCdzIHRoZSBrZXkuIERvZXMgYGR3bWFjNGAgZ2V0IHVzZWQgaW4gYSBQQ0kgY29udGV4dD8gSSdsbCBuZWVkIHRvIGdvIGxvb2sgYXQgYHN0bW1hY19wY2kuY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGxpbmsgdG8gdGhhdCBgZHdtYWM0YCBjb2RlLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBjcnVjaWFsIGNsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTQuNjU5OTU3MTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTc2Njc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hYzRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNDo1NC43MTc5NDMwMDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2NjA5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBDSSBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgc3RtbWFjYCBkcml2ZXIgaXMgdXNpbmcgUENJLiBUaGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyBsaWtlbHkgdGhlIGNvcmUgUENJIGRyaXZlciBmaWxlLCB3aGljaCwgYmFzZWQgb24gdGhlIGNvbnRleHQsIGlzIHByb2JhYmx5IGBzdG1tYWNfcGNpLmNgLiBNeSBpbnN0aW5jdCBpcyB0byBvcGVuIHRoYXQgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIElEIG1hdGNoaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnkgYW5kIGludGVycnVwdCBsaW5lcywgdXN1YWxseSksIGFueSBzcGVjaWZpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3MsIGFuZCBvZiBjb3Vyc2UsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBtYW5hZ2VzIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIGJhc2VkIG9uIHRoZSBQQ0kgaW5mb3JtYXRpb24gaXQgZmluZHMuIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIG1hcCBvdXQgdGhlIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgaGFuZGxpbmcgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBkZXBlbmRlbmNpZXMuIEknbSBhc3N1bWluZyBpdCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBQQ0kgZHJpdmVyIG1vZGVsLCBidXQgdmVyaWZ5aW5nIHRob3NlIGFzc3VtcHRpb25zIGVhcmx5IG9uIHdpbGwgc2F2ZSB0aW1lIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDY0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTguMzI0NTU0NDQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjEwODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjQ6NTguMzgwNjcwOTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDI1MzM4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgR01BQzUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc25wc19nbWFjNV9wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgdGhlIG5hbWUgcHJldHR5IGNsZWFybHkgcGVncyBpdCB0byB0aGUgR01BQzUgY29udHJvbGxlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgR01BQzXigKYgbm93LCBkb2Vzbid0IHRoYXQgdXRpbGl6ZSB0aGUgYGR3bWFjNGAgY29yZT9cIiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29ubmVjdGlvbi5cblxuU2luY2UgSSdtIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGVmYXVsdCBzZXR0aW5ncywgSSBzaG91bGQgY2hlY2sgdGhlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc3RydWN0dXJlLiBUaGF0IGxpa2VseSBjb250YWlucyB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcy4gTGV0IG1lIGRlbHZlIGludG8gdGhhdCBzdHJ1Y3R1cmUuIEhvcGVmdWxseSBpdCB3aWxsIGNvbmZpcm0gb3IgZGVueSBteSBzdXNwaWNpb24gdGhhdCBHTUFDNSBpcyBhbiBpbnN0YW5jZSBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIDQgY29yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5OCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjAxLjkyMzIwODI5M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNzkxMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic25wc19nbWFjNV9kZWZhdWx0X2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01MD1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjU0OnN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAzOlxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MDEuOTgyMzkxODUxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDkxMjQwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERhdGEgRmlsZSoqXG5cbkFscmlnaHQsIHRoZSBkaXJlY3RpdmUgaXMgY2xlYXIuIExldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBpbW1lZGlhdGUgY3VlIGlzIHRvIGV4YW1pbmUgdGhlIGZpbGUgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYC4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbiAtIFwic25wc1wiIHN1Z2dlc3RzIFNpbmdsZSBOdWNsZW90aWRlIFBvbHltb3JwaGlzbXMgZGF0YSwgXCJnbWFjNVwiIHByb2JhYmx5IGRlbm90ZXMgYSBzcGVjaWZpYyBleHBlcmltZW50LCBtZXRob2RvbG9neSwgb3IgdmVyc2lvbiwgYW5kIFwiZGVmYXVsdF9kYXRhXCIgbGlrZWx5IGluZGljYXRlcyBlaXRoZXIgdGhlIHJhd2VzdCBmb3JtIG9yIGEgY3VyYXRlZCBiYXNlbGluZSBkYXRhc2V0LiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIGxpa2VseSBmaWxlIGZvcm1hdCAtIGlzIGl0IGEgVkNGLCBhIHBsYWluIHRleHQgdGFibGUsIGEgYmluYXJ5IGZvcm1hdD8gVGhlICdkZWZhdWx0JyBwYXJ0IGltcGxpZXMgYSBzdGFydGluZyBwb2ludCwgc28gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcHJlcHJvY2Vzc2luZyBzdGVwcyB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gYXBwbGllZC4gS25vd2luZyB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgZm91bmRhdGlvbmFsIGZvciBhbnkgZG93bnN0cmVhbSBhbmFseXNpcy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgbWV0YWRhdGEsIHRoZSBkYXRhIHN0cnVjdHVyZSwgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBhc3NvY2lhdGVkIHdpdGggaXQuIEZyb20gdGhlIG5hbWUgYWxvbmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCB0aGUgYW5hbHl0aWNhbCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzg4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MDUuMzkxNTE4MTI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XFxuICA5MzpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjA1LjM5MTU5MDk3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA5MzQyODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIFN5emthbGxlciBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgYXNzaWdubWVudDogYHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtgLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBgZHdtYWM0YC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQncyB0aGUgUENJIGltcGxlbWVudGF0aW9uLCByaWdodD8gQW5kIEkgcmVjYWxsIHRoYXQgZmlsZSBiZWluZyBjb21waWxlZCB1bmRlciBgQ09ORklHX1NUTU1BQ19QQ0lgLlxuXG5UaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogKmNhbiogc3l6a2FsbGVyIGZ1enogdGhpcz8gV2VsbCwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGF0J3MgZGVmaW5pdGVseSBhIHBvaW50IGluIGZhdm9yLiBCdXQgZG9lcyBpdCBmdXp6ICpzcGVjaWZpY2FsbHkqIHRoZSBgc3RtbWFjYCBkcml2ZXI/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC5cblxuVG8gZG8gdGhhdCwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIGVpdGhlciBgQ09ORklHX1NUTU1BQ19FVEhgIChmb3IgdGhlIEV0aGVybmV0IGRyaXZlciBpbiBnZW5lcmFsKSBvciBgQ09ORklHX1NUTU1BQ19QQ0lgIHNwZWNpZmljYWxseS4gTGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byBzZWUgd2hhdCB0aGUgZGVhbCBpcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3ODMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxMC4yMDA5MzYzOTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgMzU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuICAzNjpcXHRcXHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGlmIFNUTU1BQ19QTEFURk9STVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxcIlxcbiAgNDY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA0NzpcXHRcXHRzZWxlY3QgTUlJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gIDQ5OlxcdFxcdGhlbHBcXG4gIDUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIERXTUFDX0dFTkVSSUNcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuICA1NDpcXHRcXHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4gIDU3OlxcdFxcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxcbiAgNTg6XFx0XFx0ICBkYXRhIGZvciBzZXR1cC5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIERXTUFDX0FOQVJJT05cXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4gIDYyOlxcdFxcdGRlZmF1bHQgQVJDXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBEV01BQ19FSUM3NzAwXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcXG4gIDc0OlxcdFxcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xcbiAgNzU6XFx0XFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcXG4gIDc2OlxcdFxcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBEV01BQ19JTkdFTklDXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4gIDgwOlxcdFxcdGRlZmF1bHQgTUFDSF9JTkdFTklDXFxuICA4MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoTUFDSF9JTkdFTklDIHx8IENPTVBJTEVfVEVTVClcXG4gIDgyOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA4MzpcXHRcXHRoZWxwXFxuICA4NDpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gSW5nZW5pYyBTb0NzLlxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA4NzpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcXG4gIDg4OlxcdFxcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA4OTpcXHRcXG4gIDkwOlxcdGNvbmZpZyBEV01BQ19JUFE4MDZYXFxuICA5MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUUNBIElQUTgwNnggRFdNQUMgc3VwcG9ydFxcXCJcXG4gIDkyOlxcdFxcdGRlZmF1bHQgQVJDSF9RQ09NXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxcbiAgOTQ6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDk1OlxcdFxcdGhlbHBcXG4gIDk2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUUNBIElQUTgwNlggRFdNQUMgRXRoZXJuZXQuXFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gIDk5OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgaGFyZHdhcmVcXG4gMTAwOlxcdFxcdCAgYWNjZWxlcmF0aW9uIGZlYXR1cmVzIGF2YWlsYWJsZSBvbiB0aGlzIFNvQy4gTmV0d29yayBkZXZpY2VzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjEwLjIwMTA0MTg0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE5NjY1OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUHJpb3JpdGl6aW5nIFNlY3VyaXR5OiBJbml0aWF0aW5nIFBDSSBDb21wbGlhbmNlIFJldmlldyoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQncyB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGFuZCBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHJpZ2h0IHBhdGguIEdpdmVuIHRoZSBzZW5zaXRpdmUgbmF0dXJlIG9mIHRoZSBwcm9qZWN0IGFuZCB0aGUgZGF0YSBpbnZvbHZlZCwgSSBuZWVkIHRvIG1ha2UgUENJIGNvbXBsaWFuY2UgdGhlIHZlcnkgZmlyc3Qgc3RvcCBvbiB0aGUgY2hlY2tsaXN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGNhcmRob2xkZXIgZGF0YSBpbiBhbnkgd2F5LCBzaGFwZSwgb3IgZm9ybSwgUENJIGlzIGdvaW5nIHRvIGJlIGEgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1pbmQgb24gdGhlIHNjb3BlLCBhbmQgdGhhdCB3aWxsIHNldCB0aGUgZ3JvdW5kd29yayBmb3IgYWxsIGZ1dHVyZSBkZXNpZ24gYW5kIGRldmVsb3BtZW50IGNob2ljZXMuIFNvLCBsZXTigJlzIGJlZ2luIHRoZXJlLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIFBDSSByZXZpZXcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFoZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYzMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxMy4zMjA3MTA3OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzI3MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MTMuMzg0NDQzMzk4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzE4NDgyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRHJpdmVyIENvbmZpZ3VyYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhdCBwbGF5IGhlcmUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgdGhlIGtleSBmbGFncyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhvc2Ugc2V0dGluZ3MgYWN0dWFsbHkgaW5mbHVlbmNlIHRoZSBidWlsZC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGBkd21hYzRfZG1hLmNgIGZpbGUgaXMgZ2V0dGluZyBjb21waWxlZCB3aGVuIHRoZSBgU1RNTUFDX0VUSGAgb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiB0aGF0IEkgbmVlZCB0byBhbnN3ZXIuIEkgc3VzcGVjdCB0aGUgYW5zd2VyIGlzIHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3Igc29tZSBvdGhlciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5ODgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNToxNi42MTYyOTQxNjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjUxNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3bWFjNF9kbWEub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zPXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS02LVxcdCAgICAgIG1tY19jb3JlLm8gc3RtbWFjX2h3dHN0YW1wLm8gc3RtbWFjX3B0cC5vIGR3bWFjNF9kZXNjcy5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjc6XFx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOC1cXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjE2LjY3NDk1MDkyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDIwMTQyNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0bW1hY2AgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBjbGVhcmx5IGJlbG9uZ3Mgd2l0aGluIHRoZSBgc3RtbWFjLW9ianNgIGNvbnRleHQ7IHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGBkZWluaXRfY2hhbmAgZnVuY3Rpb24gdG8gdGhlIGBkd21hYzRfZG1hX29wc2AgYW5kIGBkd21hYzQxMF9kbWFfb3BzYCBzdHJ1Y3R1cmVzLiBUaGF0J3MgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgbW9kaWZ5aW5nIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBub3cgY2FsbHMgdGhpcyBuZXdseSBhZGRlZCBgc3RtbWFjX2RlaW5pdF9jaGFuYCBmdW5jdGlvbi4gV2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgbW9yZSB0aG9yb3VnaGx5IHNodXR0aW5nIGRvd24gYSBjaGFubmVsLlxuXG5CdXQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgZnVuY3Rpb24gaXMgZXZlbiBhY3RpdmVseSB1c2VkIGluIHRoZSBjb2RlLiBJIG11c3QgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBmdW5jdGlvbiBjcml0aWNhbCwgdXNlZCBvbmx5IGluIHJhcmUgY2FzZXMsIG9yIHBvdGVudGlhbGx5IGRlYWQgY29kZT8gSXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24gYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjIwLjY5NTEwMTI0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMTQyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3N0b3BfYWxsX2RtYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTQwPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI1NTQ6ICogc3RtbWFjX3N0b3BfYWxsX2RtYSAtIHN0b3AgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTUtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1OTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjQyPXN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI2MC1cXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjYxOlxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTAxPXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMTgtXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMTk6XFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgxODE9aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNC1cXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIwNTpcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MjAuNzU3MTIyOTg0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTc2NTI2MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogaXQuIFRoaXMgcGF0Y2ggbG9va3MgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCB0b3VjaGVzIHNvbWUga2V5IGNsZWFudXAgZnVuY3Rpb25zOiBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpbnRlcnJ1cHQgaGFuZGxpbmcgZHVyaW5nIGludGVyZmFjZSBzaHV0ZG93biBhbmQgc3VzcGVuZCwgc28gaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIGNvbnRyb2wgcGF0aCBvcGVyYXRpb25zIHJhdGhlciB0aGFuIGhpZ2gtZnJlcXVlbmN5IGRhdGEgcGF0aHMuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZyBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hlZCBkdXJpbmcgaW50ZXJmYWNlIGJyaW5nLXVwIGFuZCBicmluZy1kb3duIC0gdmVyeSBjb21tb24gb3BlcmF0aW9ucyBmb3IgZnV6emluZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoaW4gYF9fc3RtbWFjX3JlbGVhc2VgICh0cmlnZ2VyZWQgYnkgYG5kb19zdG9wYCksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgZHVyaW5nIHN1c3BlbmQsIG1ha2luZyB0aGVtIGVhc2lseSByZWFjaGFibGUuIFNpbmNlIGBzdG1tYWNgIHN1cHBvcnRzIFBDSSwgSSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgYHN5el9wY2lfdnBjaWAgY2FsbCB0byBpbnN0YW50aWF0ZSBhIFBDSSBkZXZpY2UgYW5kIGJyaW5nIHRoZSBpbnRlcmZhY2UgdXAgYW5kIGRvd24gcmVwZWF0ZWRseS4gVGhpcyBpcyBhIGNsYXNzaWMgc3l6a2FsbGVyIGZ1enppbmcgdGVjaG5pcXVlLiBBZGRpdGlvbmFsbHksIEkga25vdyB0aGF0IGBzdG1tYWNgIGlzIGEgbmV0d29yayBkZXZpY2UsIGFuZCBzeXprYWxsZXIncyBjb21tb24gb3BlcmF0aW9ucyBpbmNsdWRlIGJyaW5naW5nIG5ldHdvcmsgaW50ZXJmYWNlcyB1cCBhbmQgZG93biwgc28gSSdsbCBzZWUgbG90cyBvZiBjb3ZlcmFnZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJIHNlZSBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgIGFyZSBjcml0aWNhbC4gSSBjaGVja2VkIHRoZSBLY29uZmlnIGFuZCB2ZXJpZmllZCB0aGF0IGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBTVE1NQUNfRVRIYCwgc28gYm90aCBhcmUgbmVjZXNzYXJ5LiBJJ20gZ29pbmcgdG8gYWRkIHRoZXNlIHRvIHRoZSBjb25maWcuXG5cblRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBoZXJlIGFyZSB0aGUgb25lcyB0aGUgcGF0Y2ggbW9kaWZpZXMsIHNwZWNpZmljYWxseSBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBJJ3ZlIHZlcmlmaWVkIHRoZWlyIGV4YWN0IG5hbWVzLCBhbmQgdGhleSdyZSBhbGwgcmVhY2hhYmxlIHZpYSBjb250cm9sIHBhdGggb3BlcmF0aW9ucywgd2hpY2ggbWVhbnMgdGhleSdyZSB2ZXJ5IGFwcHJvcHJpYXRlIGZvciBmdXp6aW5nLiBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgaXMgYSBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSB0YXJnZXQuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHBhdGNoJ3MgYGR3bWFjNF9kbWFfZGVpbml0X2NoYW5uZWxgIGltcGxlbWVudGF0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgY2xlYXJpbmcgaW50ZXJydXB0IGVuYWJsZSBtYXNrcyBmb3IgRE1BIGNoYW5uZWxzLCB3aGljaCBpcyBsaWtlbHkgZml4aW5nIGFuIGludGVycnVwdC1yZWxhdGVkIGJ1ZyBkdXJpbmcgaW50ZXJmYWNlIHNodXRkb3duIG9yIHN1c3BlbmQuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2Ugc3VnZ2VzdHMgdGhhdCBmdXp6aW5nIHRoZXNlIGludGVycnVwdC1yZWxhdGVkIG9wZXJhdGlvbnMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIG1lbW9yeSBzYWZldHkgb3Igb3RoZXIgaXNzdWVzLlxuXG5GaW5hbGx5LCB3aGlsZSBJICpjb3VsZCogYWxzbyBpbmNsdWRlIGBEV01BQ19HRU5FUklDYCBhbmQgYFNUTU1BQ19QTEFURk9STWAganVzdCBpbiBjYXNlLCBJIHRoaW5rIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBzdWZmaWNpZW50IGJlY2F1c2Ugb2Ygc3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGBzeXpfcGxhdGZvcm1fZGV2aWNlYCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cy4gSG93ZXZlciwgc2luY2UgYFNUTU1BQ19QTEFURk9STWAgZGVmYXVsdHMgdG8geWVzLCBJIHNob3VsZCBiZSBjb3ZlcmVkLiBJJ20gZ29pbmcgdG8gcHJvY2VlZCB3aXRoIGZ1enppbmcgdXNpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYW5kIHNlZSBob3cgaXQgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NjUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjMzLjMzMzY1MzM2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2Mjk2NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MzMuNjc5OTU3MDg3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjgwNjQ0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBTVE1NQUNfUENJIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfUENJYC4gV2UncmUgdGFsa2luZyBhYm91dCBhIFBDSS1iYXNlZCBTVE1pY3JvZWxlY3Ryb25pY3MgR2lnYWJpdCBFdGhlcm5ldCBNQUMsIHNvIGEgdGhvcm91Z2ggZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbWFqb3IgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwcyB3aXRoOlxuXG4qICAgKipUaGUgUENJIHN1YnN5c3RlbToqKiBTcGVjaWZpY2FsbHksIHdoYXQgZHJpdmVyIG1vZGVscyBhcmUgYXNzdW1lZD8gSXMgaXQgdXRpbGl6aW5nIHRoZSBzdGFuZGFyZCBgcGNpX2RyaXZlcmAgZnJhbWV3b3JrLCBvciBhcmUgdGhlcmUgY3VzdG9tIGludGVyYWN0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyAoTVNJIHZzLiBsZWdhY3kpLCBhbmQgcG93ZXIgbWFuYWdlbWVudCBob29rcywgYW1vbmcgb3RoZXIgdGhpbmdzLiBJIHdpbGwgYmUgbG9va2luZyBpbnRvIHRoZSBkZXZpY2UgdHJlZSBvciBBQ1BJIHNldHVwLlxuKiAgICoqVGhlIFNUTU1BQyBjb3JlIGRyaXZlcjoqKiBXaGF0IHZlcnNpb24gb2YgdGhlIGNvcmUgaXMgaXQgbGlua2VkIHRvPyBBbnkgc3BlY2lmaWMgcGF0Y2hlcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXBwbGllZCBhdCB0aGUgY29yZSBsZXZlbCB0aGF0IGltcGFjdCB0aGUgUENJIHZhcmlhbnQ/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGZlYXR1cmUgc2V0IHN1cHBvcnRlZCBieSB0aGlzIHBhcnRpY3VsYXIgaW5zdGFudGlhdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBzbyBJIGNhbiBwcmVkaWN0IGVkZ2UgY2FzZXMuXG4qICAgKipOZXR3b3JraW5nIHN0YWNrIGNvbXBvbmVudHM6KiogVGhlIGludGVncmF0aW9uIHBvaW50cyB3aXRoIHRoZSBgbmV0ZGV2YCBBUEkgYXJlIG9idmlvdXMsIGJ1dCBhcmUgdGhlcmUgYW55IHVudXN1YWwgaG9va3Mgb3Igd29ya2Fyb3VuZHMgbmVjZXNzYXJ5PyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzIChjaGVja3N1bSwgVFNPLCBldGMuKSBiZWluZyB1dGlsaXplZCwgYW5kIGlmIHNvLCBob3cgYXJlIHRoZXkgbWFuYWdlZCBpbiB0aGUgUENJIGNvbnRleHQ/IEFyZSB0aGVyZSBhbnkgZmxvdyBjb250cm9sIG9yIFFvUyBmZWF0dXJlcyBlbmFibGVkP1xuKiAgICoqSGFyZHdhcmUgc3BlY2lmaWNzOioqIE9mIGNvdXJzZSwgdGhlIHNwZWNpZmljIHNpbGljb24gcmV2aXNpb24gaXMgcGFyYW1vdW50LiBBcmUgdGhlcmUga25vd24gZXJyYXRhIG9yIGhhcmR3YXJlIHF1aXJrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGBTVE1NQUNfUENJYCB2YXJpYW50PyBJIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhc2hlZXRzIGFuZCBhbnkgYXZhaWxhYmxlIGVycmF0YSBzaGVldHMuXG4qICAgKipPdGhlciBkcml2ZXJzOioqIElzIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3Qgb3IgZGVwZW5kZW5jeSBvbiBvdGhlciBkcml2ZXJzIG9uIHRoZSBzYW1lIFBDSSBidXM/IE9yIGFueSBvdGhlciBkZXZpY2VzIHRoYXQgbWlnaHQgYWZmZWN0IHRoZSBvcGVyYXRpb24gb2YgdGhlIG5ldHdvcmsgY29udHJvbGxlcj9cblxuVWx0aW1hdGVseSwgbXkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcG9ydGFiaWxpdHksIG1haW50YWluYWJpbGl0eSwgYW5kIGZ1dHVyZSB1cGRhdGVzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIHNldCBtZSB1cCB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBhbnkgdGFza3MgcmVsYXRlZCB0byBgU1RNTUFDX1BDSWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjU2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6MzguMjA4MDIzODI2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDA3LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjM4LjIwODA5OTY4NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM5MTcyMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgU1RNTUFDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFNUTU1BQ19QQ0lgIG9wdGlvbiB3YXMgY29udGluZ2VudCBvbiBgU1RNTUFDX0VUSGAuIEJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aGUgY2FzZSwgYW5kIEkga25vdyB0aGVzZSBkcml2ZXJzIGluc2lkZSBhbmQgb3V0LiBBaCwgcmlnaHQuIEl0J3MgY2xldmVybHkgdHVja2VkICp3aXRoaW4qIGFuIGBpZiBTVE1NQUNfRVRIYCBibG9jay4gVGhpcyBtZWFucyB0aGUgZGVwZW5kZW5jeSBpcyBoYW5kbGVkIGlubGluZSwgYXMgYSBjb25kaXRpb25hbCBpbmNsdXNpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBsaW5lIDE4IG9mIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGUgZXhhY3QgY29uZGl0aW9uYWwgbG9naWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGJsb2NrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDEuNjQ3Mjc0NTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDEuNjQ3MzUwMzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NTAxMjE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBNYXplKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBjdXJyZW50IGZvY3VzIGlzIGRlZmluaXRlbHkgd2l0aGluIGFuIGAjaWYgU1RNTUFDX0VUSGAgYmxvY2suIFNvLCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGBTVE1NQUNfRVRIYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSBjb21waWxlZC4gVGhhdCdzIHRoZSBiYXNlbGluZSBhc3N1bXB0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCBvdGhlciBvcHRpb25zLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBpZiBgU1RNTUFDX0xJQlBDSWAgaXMgZGVmaW5lZCBvciBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY2NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTY6MjU6NDUuMjAyMzY0ODUxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU5MzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0xJQlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNjoyNTo0NS4yNzA5NjM4NDlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxNjczOTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIGFib3V0IGFkZGluZyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIHRhcmdldGluZyB0aGUgRFdNQUM0IGFuZCA0LjEwIGNvcmVzLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgc3RvcHBlZCBvciBzdXNwZW5kZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC5cblxuSSBzZWUgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGhpZGRlbiBjb25maWd1cmF0aW9uIHRoYXQgbWF0dGVycyBoZXJlLiBTbywgdG8gZW5zdXJlIHRoaXMgbmV3IGxvZ2ljIGlzIGVuYWJsZWQgYW5kIHJlbGV2YW50LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBzZXQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGludm9sdmUgdGhlc2UgZnVuY3Rpb25zOiBgZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbGAsIGBkd21hYzQxMF9kbWFfZGVpbml0X2NoYW5uZWxgLCBhbmQgYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGVzZSBhcmUgdGhlIGtleSBhcmVhcyB0byBzY3J1dGluaXplLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgYXZvaWRpbmcgcmVncmVzc2lvbnMgYW5kIGNyYXNoZXMsIGVzcGVjaWFsbHkgZHVyaW5nIGludGVyZmFjZSB0ZWFyZG93biBhbmQgc3VzcGVuZC4gVGhhdCdzIHdoZXJlIGZ1enppbmcgbmVlZHMgdG8gYmUgZm9jdXNlZDogdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBwYXRocyB0byB0ZXN0IHRoZSByb2J1c3RuZXNzIG9mIHRoaXMgbmV3IGRlaW5pdGlhbGl6YXRpb24gbG9naWMuXG5cbkkgYWxzbyBub3RpY2VkIGBzdG1tYWNfZGVpbml0X2NoYW5gLCBidXQgaXQncyBhIG1hY3JvOyBJIHdpbGwgbm90IGNvdW50IHRoaXMgYXMgYSBmdW5jdGlvbiB0byBmb2N1cyBvbi5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gSSdsbCBtYWtlIGEgbm90ZSBvZiB0aGlzIGFuZCBtb3ZlIG9uLlxuSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5OTUsIk91dHB1dFRva2VucyI6MTgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE2OjI1OjUxLjQ4NzcwNTM0MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzU4NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwiZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsXCIsXG4gICAgXCJzdG1tYWNfc3RvcF9hbGxfZG1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHdtYWM0X2RtYV9kZWluaXRfY2hhbm5lbFwiLFxuICAgIFwiZHdtYWM0MTBfZG1hX2RlaW5pdF9jaGFubmVsXCIsXG4gICAgXCJzdG1tYWNfc3RvcF9hbGxfZG1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgRE1BIGNoYW5uZWwgZGVpbml0aWFsaXphdGlvbiBsb2dpYyB0byB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBEV01BQzQvNC4xMCBjb3Jlcy4gVGhpcyBsb2dpYyBpcyBpbnZva2VkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBzdG9wcGVkIG9yIHN1c3BlbmRlZC4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIChlLmcuLCBHTUFDNSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpbnRlcmZhY2UgdGVhcmRvd24gYW5kIHN1c3BlbmQgcGF0aHMgdG8gZW5zdXJlIHRoZSBuZXcgRE1BIGRlaW5pdCBsb2dpYyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowspkh8[1] Phase: Succeeded StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 16:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 16:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2] Phase: Succeeded StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 16:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 16:26:03 +0000 UTC FinishedAt: 2026-07-18 16:26:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowspkh8/series-workflowspkh8-convert-artifact-1373010231/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 16:26:13 +0000 UTC FinishedAt: 2026-07-18 17:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 16:26:13 +0000 UTC FinishedAt: 2026-07-18 17:21:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*155f3013-2879-4147-bd67-3b54eb498f7a,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-workflowspkh8/series-workflowspkh8-convert-artifact-1373010231/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": "923f5734-7f40-4e4a-ac1d-22e65d4beedf", "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-workflowspkh8/series-workflowspkh8-build-action-2063325325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 16:26:13 +0000 UTC FinishedAt: 2026-07-18 17:21:13 +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:*155f3013-2879-4147-bd67-3b54eb498f7a,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-workflowspkh8/series-workflowspkh8-convert-artifact-1373010231/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": "923f5734-7f40-4e4a-ac1d-22e65d4beedf", "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-workflowspkh8/series-workflowspkh8-build-action-2063325325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 17:21:23 +0000 UTC FinishedAt: 2026-07-18 17:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 17:21:23 +0000 UTC FinishedAt: 2026-07-18 17:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 17:21:23 +0000 UTC FinishedAt: 2026-07-18 17:21:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 17:21:23 +0000 UTC FinishedAt: 2026-07-18 17:21:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowspkh8/series-workflowspkh8-convert-artifact-4020652390/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 17:21:33 +0000 UTC FinishedAt: 2026-07-18 17:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 17:21:33 +0000 UTC FinishedAt: 2026-07-18 17:24:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*923f5734-7f40-4e4a-ac1d-22e65d4beedf,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-workflowspkh8/series-workflowspkh8-build-action-2063325325/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-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 17:24:22 +0000 UTC FinishedAt: 2026-07-18 17:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 17:24:22 +0000 UTC FinishedAt: 2026-07-18 17:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 17:24:22 +0000 UTC FinishedAt: 2026-07-18 18:08:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 17:24:22 +0000 UTC FinishedAt: 2026-07-18 18:08:29 +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:*155f3013-2879-4147-bd67-3b54eb498f7a,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-workflowspkh8/series-workflowspkh8-convert-artifact-4020652390/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": "8f652b30-6f53-4f5c-9228-b8f0e3234e57", "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-workflowspkh8/series-workflowspkh8-build-action-3766419242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 17:24:22 +0000 UTC FinishedAt: 2026-07-18 18:08:19 +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:*155f3013-2879-4147-bd67-3b54eb498f7a,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-workflowspkh8/series-workflowspkh8-convert-artifact-4020652390/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": "8f652b30-6f53-4f5c-9228-b8f0e3234e57", "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-workflowspkh8/series-workflowspkh8-build-action-3766419242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 18:08:29 +0000 UTC FinishedAt: 2026-07-18 18:08:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 18:08:29 +0000 UTC FinishedAt: 2026-07-18 18:08:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 18:08:29 +0000 UTC FinishedAt: 2026-07-18 18:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 18:08:29 +0000 UTC FinishedAt: 2026-07-18 18:11:18 +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:*8f652b30-6f53-4f5c-9228-b8f0e3234e57,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-workflowspkh8/series-workflowspkh8-build-action-3766419242/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-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +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":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"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:*923f5734-7f40-4e4a-ac1d-22e65d4beedf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f652b30-6f53-4f5c-9228-b8f0e3234e57,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-workflowspkh8/series-workflowspkh8-build-action-2063325325/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-workflowspkh8/series-workflowspkh8-build-action-3766419242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:11:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:11:39 +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":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"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-workflowspkh8/series-workflowspkh8-convert-artifact-2707001771/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 18:11:28 +0000 UTC FinishedAt: 2026-07-18 18:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 18:11:49 +0000 UTC FinishedAt: 2026-07-18 18:13:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspkh8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dwmac4_dma_deinit_channel","dwmac410_dma_deinit_channel","stmmac_stop_all_dma"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b014dfa9-c572-4937-9dd0-7e39e6ef2b99","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 18:11:49 +0000 UTC FinishedAt: 2026-07-18 18:13:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*923f5734-7f40-4e4a-ac1d-22e65d4beedf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f652b30-6f53-4f5c-9228-b8f0e3234e57,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-workflowspkh8/series-workflowspkh8-build-action-2063325325/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-workflowspkh8/series-workflowspkh8-build-action-3766419242/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-workflowspkh8/series-workflowspkh8-convert-artifact-2707001771/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,}