Name: series-workflowc8xw8 Phase: Succeeded StartedAt: 2026-07-26 03:19:48 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[0] Phase: Succeeded StartedAt: 2026-07-26 03:19:48 +0000 UTC FinishedAt: 2026-07-26 03:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 03:19:48 +0000 UTC FinishedAt: 2026-07-26 03:54:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "BRCMFMAC", "BRCMFMAC_PCIE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "BRCMFMAC", "BRCMFMAC_PCIE" ], "series_id": "7dc04faa-5424-45f3-9204-daede8835c57" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_proto_msgbuf_rx_trigger" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1BDSUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NgLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIChgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlYCkgYXJlIGNhbGxlZCB3aGVuIHByb2Nlc3NpbmcgbWVzc2FnZXMgZnJvbSB0aGUgZGV2aWNlIHZpYSB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBQQ0lFIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgdmlhIHN5emthbGxlciYjMzk7cyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzVkNmJhMmViZGNlN2M4OTMzZmMxZjhkMmZjY2RhMmFiYzI0MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5pbmRleCBiYTFjZTE1NTJlMGY0My4uODE0NmQ1MGQ2ZjA3MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTU2MCw2ICYjNDM7NTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cdTAwM2VmbG93LCBmbG93aWQpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfbXNnYnVmX2dldF9mbG93aWQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuJiM0MztcdFx0XHRcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcbiYjNDM7e1xuJiM0MztcdHUzMiBpZCA9IGZsb3dfcmluZ19pZDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlkIFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XG4mIzQzO1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCYjMzQ7aW52YWxpZCBmbG93cmluZyBpZCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZsb3dfcmluZ19pZCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGlmIChpZCBcdTAwM2U9IG1zZ2J1Zi1cdTAwM2VtYXhfZmxvd3JpbmdzKSB7XG4mIzQzO1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCYjMzQ7aW52YWxpZCBmbG93cmluZyBpZCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZsb3dfcmluZ19pZCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqZmxvd2lkID0gaWQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC04ODAsMTcgJiM0Mzs5MDIsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqdHhfc3RhdHVzO1xuIFx0dTMyIGlkeDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSkge1xuJiM0MztcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbiYjNDM7XHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtMTIzNywxMyAmIzQzOzEyNjUsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuJiM0MztcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcbiBcbiYjNDM7XHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChzdGF0dXMpIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Rmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjY2LDEzICYjNDM7MTI5NywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwO1xuIFx0dTE2IHN0YXR1cztcbiBcdHUxNiBmbG93aWQ7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuJiM0MztcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcXG5cJiMzNDssIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7QlJDTUZNQUMmIzM0OywKICAgICYjMzQ7QlJDTUZNQUNfUENJRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyIChicmNtZm1hYykgYnkgdmFsaWRhdGluZyB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHVzaW5nIGl0IGFzIGFuIGluZGV4IHRvIGFjY2VzcyBgbXNnYnVmLVx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJiMzOTtzIHZpcnR1YWwgUENJIGZ1enplcikgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzNWQ2YmEyZWJkY2U3Yzg5MzNmYzFmOGQyZmNjZGEyYWJjMjQyNmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAwMzo1MTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwppbmRleCBiYTFjZTE1NTJlMGY0My4uODE0NmQ1MGQ2ZjA3MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTU2MCw2ICYjNDM7NTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogCWJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtJmd0O2Zsb3csIGZsb3dpZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiYjNDM7CQkJCSAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZCkKJiM0Mzt7CiYjNDM7CXUzMiBpZCA9IGZsb3dfcmluZ19pZDsKJiM0MzsKJiM0MzsJaWYgKGlkICZsdDsgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkgewomIzQzOwkJYnBoeV9lcnIobXNnYnVmLSZndDtkcnZyLCAmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcbiYjMzQ7LAomIzQzOwkJCSBmbG93X3JpbmdfaWQpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWlmIChpZCAmZ3Q7PSBtc2didWYtJmd0O21heF9mbG93cmluZ3MpIHsKJiM0MzsJCWJwaHlfZXJyKG1zZ2J1Zi0mZ3Q7ZHJ2ciwgJiMzNDtpbnZhbGlkIGZsb3dyaW5nIGlkICV1XG4mIzM0OywKJiM0MzsJCQkgZmxvd19yaW5nX2lkKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwkqZmxvd2lkID0gaWQ7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIAogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQpAQCAtODgwLDE3ICYjNDM7OTAyLDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCXN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7CiAJdTMyIGlkeDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCXUxNiBmbG93aWQ7CiAKIAl0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7CiAJaWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLSZndDttc2cucmVxdWVzdF9pZCkgLSAxOwotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtJmd0O2RydnItJmd0O2J1c19pZi0mZ3Q7ZGV2LAogCQkJCSAgICAgbXNnYnVmLSZndDt0eF9wa3RpZHMsIGlkeCk7CiAJaWYgKCFza2IpCiAJCXJldHVybjsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpIHsKJiM0MzsJCWJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtJmd0O2RydnIsIHR4X3N0YXR1cy0mZ3Q7bXNnLmlmaWR4KSwKJiM0MzsJCQkJIHNrYiwgZmFsc2UpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi0mZ3Q7dHhzdGF0dXNfZG9uZV9tYXApOwogCWNvbW1vbnJpbmcgPSBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdOwogCWF0b21pY19kZWMoJmFtcDtjb21tb25yaW5nLSZndDtvdXRzdGFuZGluZ190eCk7CkBAIC0xMjM3LDEzICYjNDM7MTI2NSwxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDsKIAl1MTYgc3RhdHVzOwogCXUxNiBmbG93aWQ7CiYjNDM7CXUxNiBmbG93X3JpbmdfaWQ7CiAKIAlmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmOwogCi0JZmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwotCWZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUOwomIzQzOwlmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLSZndDtjb21wbF9oZHIuc3RhdHVzKTsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJaWYgKHN0YXR1cykgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0Zsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxuJiMzNDssIHN0YXR1cyk7CiAJCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwpAQCAtMTI2NiwxMyAmIzQzOzEyOTcsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7CiAJdTE2IHN0YXR1czsKIAl1MTYgZmxvd2lkOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCiAJZmxvd3JpbmdfZGVsZXRlX3Jlc3AgPSAoc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqKWJ1ZjsKIAotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLSZndDtjb21wbF9oZHIuZmxvd19yaW5nX2lkKTsKLQlmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDsKJiM0MzsJZmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwogCXN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLnN0YXR1cyk7CiAKJiM0MzsJaWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgJmFtcDtmbG93aWQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChzdGF0dXMpIHsKIAkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcbiYjMzQ7LCBzdGF0dXMpOwogCQlicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLSZndDtmbG93LCBmbG93aWQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiB0aGUgYGJyY21mbWFjYCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgLCB0byB2YWxpZGF0ZSB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHN1YnRyYWN0aW5nIGBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gZGVhbGluZyB3aXRoIGBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdYCBhbmQgc2ltaWxhciBhcnJheSBhY2Nlc3Nlcy4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCBob3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZT8gSXMgdGhpcyBwYXRjaCBldmVuIHJlbGV2YW50IHRvIG91ciBmdXp6aW5nIGVmZm9ydHM/IGBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlci4gSG1tLCBjYW4gd2UgZnV6eiB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBXZSB1c3VhbGx5IGhhdmUgbHVjayBmdXp6aW5nIHdpcmVsZXNzIGRyaXZlcnMgaWYgdGhleSYjMzk7cmUgZXhwb3NlZCB0aHJvdWdoIFVTQiwgU0RJTywgb3Igc29tZSBraW5kIG9mIHZpcnR1YWwgYnVzLiBUaGUgZ29vZCBuZXdzIGlzIGBicmNtZm1hY2Agc3VwcG9ydHMgU0RJTywgVVNCLCBhbmQgUENJRS4KClNvLCBVU0IgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBob29rIGl0IHVwIHVzaW5nIGR1bW15X2hjZCBvciByYXctZ2FkZ2V0LiBTRElPIG1pZ2h0IGJlIHBvc3NpYmxlIHRvbywgKmlmKiB3ZSBjYW4gZmluZCBvciBidWlsZCBhbiBlZmZlY3RpdmUgU0RJTyBmdXp6ZXIuIEJ1dCBVU0IgaXMgdGhlIG1vcmUgcHJvbWlzaW5nIHJvdXRlLiBOb3csIEkgbmVlZCB0byBjb25maXJtIGlmIGBtc2didWYuY2AgaXMgYWN0dWFsbHkgdXNlZCBmb3IgVVNCLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AsIG9yIHJlbGF0ZWQgVVNCLXNwZWNpZmljIGNvZGUuIFdhaXQsIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSwgSSBiZWxpZXZlIGBtc2didWYuY2AgaXMgdXN1YWxseSBhc3NvY2lhdGVkIHdpdGggUENJRSBtb3JlIG9mdGVuLiBMZXQgbWUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04OTg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU3LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9UWF9TVEFUVVNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBDb21waWxhdGlvbiBvZiBgbXNnYnVmLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBtc2didWYuY2AgaXMgYmVpbmcgY29tcGlsZWQgd2l0aGluIHRoaXMgYnVpbGQgc3lzdGVtLiBJJiMzOTttIGVzc2VudGlhbGx5IHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHdoaWNoIG1lYW5zIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgcnVsZXMgdGhhdCBhcHBseSB0byB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB2YXJpb3VzIG1ha2VmaWxlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSXMgdGhlcmUgYSB0b3AtbGV2ZWwgYE1ha2VmaWxlYCBvcmNoZXN0cmF0aW5nIGV2ZXJ5dGhpbmcsIG9yIGlzIGl0IGEgbW9yZSBkZWNlbnRyYWxpemVkIHN0cnVjdHVyZT8gTGlrZWx5IHRoZXJlIGFyZSBpbmNsdWRlIHN0YXRlbWVudHMgdG8gb3RoZXIgYE1ha2VmaWxlYHMuIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYW55IGBNYWtlZmlsZWAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCB0aGUgc3Vycm91bmRpbmcgZGlyZWN0b3JpZXMuIEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZm9sbG93IHRoZSB0cmFpbCBvZiBpbmNsdWRlIGRpcmVjdGl2ZXMuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBsaWtlIGNvbXBpbGVyIGludm9jYXRpb25zLCBvYmplY3QgZmlsZSB0YXJnZXRzLCBhbmQgZGVwZW5kZW5jeSBydWxlcyB0aGF0IGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBpbnZvbHZlIGBtc2didWYuY2AuIExvb2sgZm9yIGFueXRoaW5nIGxpa2UgYCQoQ0MpIC1jIC4uLiBtc2didWYuY2AsIG9yIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBidWlsZCByZWNpcGVzIHRoYXQgaW5jb3Jwb3JhdGUgaXQgdGhyb3VnaCBoZWFkZXJzIG9yIGxpYnJhcmllcy4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIGV5ZSBvdXQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLCBlc3BlY2lhbGx5IGlmIHRoZSBjb2RlIHVzZXMgZGlmZmVyZW50IGNvbXBpbGF0aW9uIHRhcmdldHMuCgpJZiB0aGVyZSBpcyBhIG1vcmUgY29tcGxleCBidWlsZCBzeXN0ZW0gaW4gdXNlLCBsaWtlIGBhdXRvdG9vbHNgIG9yIGBDTWFrZWAsIEkmIzM5O2xsIG5lZWQgdG8gYWRqdXN0IG15IGFwcHJvYWNoLiBUaGV5IG1pZ2h0IHVzZSBnZW5lcmF0ZWQgbWFrZWZpbGVzIG9yIGhhdmUgdGhlaXIgb3duIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBkZWZpbmUgYnVpbGQgdGFyZ2V0cyBhbmQgZGVwZW5kZW5jaWVzLiBJbiB0aGF0IGNhc2UsIEkmIzM5O2QgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBnZW5lcmF0ZWQgbWFrZWZpbGUgYW5kIHdoYXQgdG9vbCBnZW5lcmF0ZWQgaXQuCgpVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiB1c2VkIHRvIGNvbXBpbGUgYG1zZ2J1Zi5jYCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucywgYW5kIG90aGVyIHJlbGV2YW50IGJ1aWxkIHNldHRpbmdzLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21zZ2J1ZlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZT0zMj1icmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUYpICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS0zNC1cdFx0Zmxvd3JpbmcubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM1Olx0XHRtc2didWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM2LWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1NESU8pICYjNDM7PSBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTAKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUZgIFNlbGVjdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHRyaWdnZXJzIHRoYXQgbGVhZCB0byB0aGUgaW5jbHVzaW9uIG9mIGBDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBpbiBhIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGxpa2VseSByZWxhdGVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSAmIzM0O1BST1RPX01TR0JVRiYjMzQ7IHN1ZmZpeCBpcyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIG9yIGJ1ZmZlcmluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgYSB0b29sIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IGNvZGUgcGF0aHMgcmVzcG9uc2libGUgZm9yIGNvbmRpdGlvbmFsbHkgZW5hYmxpbmcgdGhhdCBzeW1ib2wsIHByb2JhYmx5IHRocm91Z2ggYSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG1vZHVsZXMgb3IgZmVhdHVyZXMgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBkZXBlbmRlbnQgb24uCgpJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGlmIHRoaXMgY2hvaWNlIGlzIGEgJiMzNDtkZWZhdWx0JiMzNDsgZm9yIGEgYm9hcmQsIGJ1dCBtb3JlIGxpa2VseSBpcyBkZXRlcm1pbmVkIGJ5IG90aGVyIHNldHRpbmdzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY29uc2lkZXIgcmVsYXRlZCBvcHRpb25zIGluIHRoZSBgQlJDTUZNQUNgIGtjb25maWcgZmlsZSwgb3IgcG9zc2libHkgaW4gYSBwYXJlbnQgY29uZmlndXJhdGlvbiBmaWxlLCB0aGF0IGNvdWxkIGRldGVybWluZSB0aGlzIG9wdGlvbi4KCk9uY2UgSSYjMzk7dmUgaWRlbnRpZmllZCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRmAuIFdoYXQgYXJlIHRoZSByZXNvdXJjZSB0cmFkZW9mZnM/IElzIGl0IHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgKHBlcmhhcHMgb2ZmbG9hZGluZyBtZXNzYWdlIHByb2Nlc3NpbmcpPyBEb2VzIGl0IGVuYWJsZSBzcGVjaWZpYyB3aXJlbGVzcyBmZWF0dXJlcyBsaWtlIGhhcmR3YXJlIG9mZmxvYWQsIG9yIGlzIGl0IG1vcmUgb2YgYW4gaW50ZXJuYWwgZHJpdmVyIG9wdGltaXphdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGdlbmVyYXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IGhhdmUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoZSByZWxldmFudCBjb2RlIHdpdGggdGhlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gb3IgYSBkYXRhc2hlZXQsIGlmIGl0JiMzOTtzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xMT1jb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIEhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwcm92aWRlZCB0ZXh0IGFzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgbXkgdGhvdWdodCBwcm9jZXNzLCBhbmQgYXNzdW1pbmcgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIHdoYXQgdGhlIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHNlbGVjdC4gSXMgaXQgYSBzcGVjaWZpYyBlbGVtZW50LCBhIGRhdGEgcG9pbnQsIGFuIGFsZ29yaXRobT8gV2hhdCBhcmUgdGhlIGluaGVyZW50IGNoYXJhY3RlcmlzdGljcyBvZiB3aGF0ZXZlciYjMzk7cyBiZWluZyBzZWxlY3RlZD8gVW5kZXJzdGFuZGluZyB0aGUgKmlucHV0cyogaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byB0aGluayBhYm91dCB0aGUgc2VsZWN0aW9uIG1lY2hhbmlzbSBpdHNlbGYuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCwgYSBjb21wbGV4IHdlaWdodGluZyBzeXN0ZW0sIG9yIHNvbWV0aGluZyBtb3JlIGFkdmFuY2VkIGxpa2UgYSBtYWNoaW5lIGxlYXJuaW5nIG1vZGVsIGF0IHBsYXk/IEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuIE15IGV4cGVyaWVuY2UgZGljdGF0ZXMgdGhhdCBJIG11c3QgbG9vayBjbG9zZWx5IGF0IHRoZSBkYXRhLiBJJiMzOTt2ZSBzZWVuIGl0IGFsbCwgYW5kIGtub3cgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9NDA9Y29uZmlnIEJSQ01GTUFDX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0NDpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQ1LVx0c2VsZWN0IEZXX0xPQURFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTI4CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgQlJDTUZNQUMqKgoKT2theSwgc28gYEJSQ01GTUFDX1BDSUVgIHNlbGVjdHMgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAuIE15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGBCUkNNRk1BQ19QQ0lFYD8gVGhlIGFuc3dlciBoaW5nZXMgb24gUENJLCBuYXR1cmFsbHkuIEFuZCwgY2FuIHdlIGZ1enogUENJIGRldmljZXMgd2l0aGluIFFFTVU/IEdlbmVyYWxseSwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZnV6eiBqdXN0ICphbnkqIFBDSSBkZXZpY2UgdW5sZXNzIHRoZXJlJiMzOTtzIHNwZWNpZmljIHN1cHBvcnQgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9yZSBnZW5lcmljIFBDSSBmdXp6aW5nIG1lY2hhbmlzbS4gQWgsIGJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHZmaW8vcGNpYC4KCk5vdywgdGhlIHByb21wdCBicmluZ3MgdXAgYSBjcml0aWNhbCBjYXZlYXQ6IGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBsaWtlIHRob3NlIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhcmUgZXhjbHVkZWQuIElzIGBicmNtZm1hY2Agb25lIG9mIHRob3NlPyBJdCYjMzk7cyBhIEJyb2FkY29tIEZ1bGxNQUMgd2lyZWxlc3MgZHJpdmVyLCBzbywgaXQmIzM5O3MgZGVmaW5pdGVseSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKmxpa2UqIHRob3NlIGV4Y2x1ZGVkIHR5cGVzPwoKSG9sZCBvbi4uLiBJJiMzOTttIHNlZWluZyB0aGUgY29tbWl0IGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBUaGF0IG1lYW5zIHN5emthbGxlciAqZm91bmQqIHRoaXMgYnVnLCBhbmQgdGhpcyBpcyBhIHBhdGNoISBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBVU0IgYW5kIFBDSSBmdXp6ZXJzLiBJIHNob3VsZCBjaGVjayBpZiBgYnJjbWZtYWNgIGlzIGFjdHVhbGx5IGZ1enplZCBieSBzeXprYWxsZXIuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgUENJIGZ1enplciBpbiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgaXQgKmRvZXMqIGZ1enogUENJIGRldmljZXMgdXNpbmcgYSB2aXJ0dWFsIFBDSSBicmlkZ2Ugb3IgYSBzaW1pbGFyIG1lY2hhbmlzbS4gVGhlbiBJJiMzOTttIHJlbWluZGVkIG9mIHRoZSBwcm9tcHQmIzM5O3MgY29uZGl0aW9uOiByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZS4KCklzIGBicmNtZm1hY2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gTm8sIGl0JiMzOTtzIGEgV2ktRmkgZHJpdmVyLCBzbyBpdCYjMzk7cyBub3QgYW55IG9mIHRob3NlLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXImIzM5O3MgZW52aXJvbm1lbnQuIE9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaWYgYGJyY21mbWFjYCBpcyByZWFjaGFibGUsIHRoZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3BjaWVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0Mzk6YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNDQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI2NTY9c3RhdGljIGludCBicmNtZl9wY2llX3BtX2xlYXZlX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2OTA6XHRlcnIgPSBicmNtZl9wY2llX3Byb2JlKHBkZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjkxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3NjI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJyY21mX3BjaWVkcnZyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc2NC1cdC5pZF90YWJsZSA9IGJyY21mX3BjaWVfZGV2aWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3NjU6XHQucHJvYmUgPSBicmNtZl9wY2llX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY2LVx0LnJlbW92ZSA9IGJyY21mX3BjaWVfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njc3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJiMzOTtzIFBDSSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IGBicmNtZm1hY2AgdG9kYXkuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZDogaXMgdGhpcyBkcml2ZXIgKmV4Y2x1c2l2ZWx5KiB0aWVkIHRvIFBDSSwgb3IgZG9lcyBpdCBzdXBwb3J0IG90aGVyIGludGVyZmFjZXMsIHRvbz8gS25vd2luZyB0aGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHBvcnRhYmlsaXR5LCBpdHMgcG90ZW50aWFsIGFwcGxpY2F0aW9uIGluIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kLCBxdWl0ZSBmcmFua2x5LCB3aGVyZSBJIGNhbiBtYWtlIHRoZSBtb3N0IGltcGFjdCB3aXRoIGFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgY29uc2lkZXIuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIFBDSSBkZXBlbmRlbmNlIHJpZ2h0IG5vdywgYXMgdGhhdCBpbXBhY3RzIGFueSBvZiBteSBvdGhlciBpbnZlc3RpZ2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUxMwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJiMzOTtzIFRyYW5zcG9ydCBQcm90b2NvbCBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBtYXAgb2YgdGhlIGBicmNtZm1hY2AgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBTRElPLCBVU0IsIGFuZCBQQ0lFLiBOYXR1cmFsbHksIHdoZW4gYnVpbGRpbmcgYSBkcml2ZXIgd2l0aCB0aGVzZSBkaXZlcnNlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZXMsIHRoZSBwcm90b2NvbCBkZXRhaWxzIGdldCBhIGJpdCBtb3JlIGNvbXBsZXguIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYG1zZ2J1Zi5jYCBjb21wb25lbnQuIEkga25vdyB0aGF0IGZpbGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aGVuIGBCUkNNRk1BQ19QUk9UT19NU0dCVUZgIGlzIGRlZmluZWQuIFRoZSBjb25kaXRpb25hbCBsb2dpYyBwb2ludHMgdG8gYEJSQ01GTUFDX1BDSUVgIGFzIHRoZSB0cmlnZ2VyIGZvciB0aGF0IGNvbXBpbGF0aW9uIHBhdGguIE15IHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBVU0IgdHJhbnNwb3J0IGFsc28gdXNlcyB0aGUgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgcHJvdG9jb2wuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBkZXBlbmRlbmN5IG9yIGEgYnVpbGQgZmxhZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgbWVzc2FnZSBidWZmZXIgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBpbiBhIGNvbnNpc3RlbnQgZmFzaGlvbiBhY3Jvc3MgYWxsIHRoZSB0cmFuc3BvcnQgbWVkaXVtcy4gSSBuZWVkIHRvIGJlIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgdG8gZXZhbHVhdGUgdGhlIGRyaXZlciBhcmNoaXRlY3R1cmUgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlJDTUZNQUNfUFJPVE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjAtXHRkZXBlbmRzIG9uIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyMTpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yMi1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0yOT1jb25maWcgQlJDTUZNQUNfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzItXHRkZXBlbmRzIG9uIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzozMzpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zNC1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz00MD1jb25maWcgQlJDTUZNQUNfUENJRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0Olx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDUtXHRzZWxlY3QgRldfTE9BREVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTEKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAzMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlJDTUZNQUMgQnVnIEZvdW5kIGJ5IFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0LCBhbmQgaXQgc2VlbXMgdGhpcyBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBjb2RlIHBhdGggaXMgb25seSBlbmFibGVkIGlmIHRoZSBgQlJDTUZNQUNfUENJRWAgb3B0aW9uIGlzIHNlbGVjdGVkLiBUaGF0IG1lYW5zIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIFBDSWUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRyaXZlci4gTm93LCB0aGUgb2J2aW91cyBxdWVzdGlvbiBpcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgYnV0IGlzIGl0IHNvcGhpc3RpY2F0ZWQgZW5vdWdoIHRvIGhhbmRsZSB0aGlzIHNwZWNpZmljIGBicmNtZm1hY2AgUENJZSBkcml2ZXIsIG9yIGlzIGl0IGp1c3QgbGltaXRlZCB0byBnZW5lcmljIFBDSSBkZXZpY2UgZnV6emluZz8KCldhaXQgYSBzZWNvbmTigKYgdGhlIHJlcG9ydCAqaXMqIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBTbywgaXQgKmRpZCogZmluZCBzb21ldGhpbmchIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgU3l6a2FsbGVyIGhhcyBhIHZmaW8tYmFzZWQgUENJIGZ1enplciwgd2hpY2ggY2FuIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0IG9wZW5zIHVwIGEgbXVjaCB3aWRlciBhdHRhY2sgc3VyZmFjZSBhbmQgbWVhbnMgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHdpdGhpbiBTeXprYWxsZXImIzM5O3Mgc2V0dXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIGluIHRoZSBjb21taXQuIEl0IGxvb2tzIGxpa2UgaXQgaW52b2x2ZXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgZnJlcXVlbmN5IG9mIGV4ZWN1dGlvbi4gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYC4uLiB0aGF0IHNvdW5kcyBsaWtlIGEgaG90LXBhdGggZnVuY3Rpb24sIHByb2Nlc3NpbmcgVFggc3RhdHVzIHVwZGF0ZXMuIFRoZSBvdGhlciB0d28sIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLCB0aG9zZSBhcmUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsb3cgcmluZyBtYW5hZ2VtZW50LiBIbW0sIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI2MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEyNjE6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTI2Mi1cdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzM4LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9GTE9XX1JJTkdfQ1JFQVRFX0NNUExUXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM5Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50LCBhc3N1bWluZyBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbDsgaXQmIzM5O3MgdGhlIGhlYXJ0IG9mIGhvdyBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUgYW5kIHJvdXRpbmcgdGhlbSBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtZXNzYWdlIHR5cGVzIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhbmQgaG93IHRoYXQgZGlzcGF0Y2hpbmcgbG9naWMgd29ya3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgYSBzaW1wbGUgc3dpdGNoIHN0YXRlbWVudCwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCBhbmQgZGF0YS1kcml2ZW4/JiMzNDsgQSBzaW1wbGUgc3dpdGNoIGlzIGVhc2llciB0byBmb2xsb3cgYnV0IGxlc3MgZmxleGlibGUuIEEgbW9yZSBzb3BoaXN0aWNhdGVkIG1ldGhvZCwgcGVyaGFwcyB1c2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUgb3IgYSBtZXNzYWdlLXNwZWNpZmljIGhhbmRsZXIgcmVnaXN0cnksIHdvdWxkIGxpa2VseSBiZSBtb3JlIGV4dGVuc2libGUuIEkgYWxzbyB3YW50IHRvIHNlZSB0aGUgZXJyb3IgaGFuZGxpbmcuIERvZXMgaXQgZ3JhY2VmdWxseSBoYW5kbGUgdW5rbm93biBvciBjb3JydXB0ZWQgbWVzc2FnZSB0eXBlcz8gRG9lcyBpdCBsb2cgZXJyb3JzIGluIGEgd2F5IHRoYXQmIzM5O3MgYWN0dWFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmc/IEkmIzM5O20gaG9waW5nIHRvIHNlZSBhIGdvb2QgYmFsYW5jZSBvZiBlZmZpY2llbmN5IGFuZCByb2J1c3RuZXNzIGhlcmUuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgZGVzaWduZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMjkzPWJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzMjI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODQtXHR3aGlsZSAoY291bnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzg1Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKG1zZ2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg2LVx0XHRcdFx0XHQgICAgIGJ1ZiAmIzQzOyBtc2didWYtXHUwMDNlcnhfZGF0YW9mZnNldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjM0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIGtleSB0aGluZyB0byB1bmRlcnN0YW5kIGltbWVkaWF0ZWx5IGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkOiBgYnJjbWZfbXNnYnVmX3J4YnVmYC4gVGhhdCBtZWFucyBgcnhidWZgIGlzIHRoZSBpbmNvbWluZyBkYXRhIGJ1ZmZlciBhbmQgaXQmIzM5O3MgYWN0aW5nIGFzIHRoZSBpbnB1dCB0cmlnZ2VyIGZvciB0aGlzIHNwZWNpZmljIHByb2Nlc3NpbmcgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGFyY2hpdGVjdHVyYWwgY2hhcmFjdGVyaXN0aWMgdG8gc3RhcnQgYW5hbHl6aW5nLiBUaGlzIGluZGljYXRlcyBhIGRhdGEtZHJpdmVuIG1vZGVsIHdoZXJlIHRoZSByZWNlaXB0IG9mIGEgbmV3IG1lc3NhZ2UgZnJvbSB0aGUgcmVjZWl2ZSBidWZmZXIga2lja3Mgb2ZmIHRoZSBwcmltYXJ5IGhhbmRsaW5nLiBJJiMzOTtkIG5lZWQgdG8gdHJhY2UgYGJyY21mX21zZ2J1Zl9yeGJ1ZmAgdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGNvbWluZyBmcm9tIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBkYXRhIGZsb3cgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBgcnhidWZgIGlzIGFuZCB3aGVyZSBhbmQgaG93IGl0cyBmaWxsZWQuIEl0IGxpa2VseSBzaXRzIGFzIGEgbG93ZXIgbGF5ZXIgZnVuY3Rpb24gaW4gdGhlIFJYIGRhdGEgcGF0aC4gVGhlIG5leHQgcXVlc3Rpb24gSSBoYXZlIGlzLCBkb2VzIGl0IGhhdmUgYW55IHNpZGUgZWZmZWN0cyBhbmQgd2hhdCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGFuZCBob3cgZG9lcyBpdCBhZmZlY3Qgb3RoZXIgZnVuY3Rpb25zPy4gVGhhdCYjMzk7cyBob3cgSSYjMzk7bGwgYmVnaW4gdG8gZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9yeGJ1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTI4NT1zdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyOTI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04Nzk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg5My1cdFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYtLTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTQ6XHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04OTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04OTk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MzE6c3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDEwOmJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDE3LVx0d2hpbGUgKGZpbGxidWZzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTAxODpcdFx0cmV0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KG1zZ2J1ZiwgZmlsbGJ1ZnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTktXHRcdGlmICghcmV0Y291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMjg9YnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMzItXHRcdFx0XHQgIEJSQ01GX01TR0JVRl9SWEJVRlBPU1RfVEhSRVNIT0xEKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDMzOlx0XHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTAzNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMzc9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMzg6YnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMzktXHRcdFx0ICAgICB1MzIgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTExMTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTE1LVx0Y291bnQgPSBtc2didWYtXHUwMDNlbWF4X2lvY3RscmVzcGJ1ZiAtIG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMTY6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCBmYWxzZSwgY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTctXHRtc2didWYtXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZiAmIzQzOz0gY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTEyMTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMjUtXHRjb3VudCA9IG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYgLSBtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMjY6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCB0cnVlLCBjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyNy1cdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYgJiM0Mzs9IGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTMxPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTQ1LVx0XHRtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmLS07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE0NjpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTU2MT1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjU1LVx0ZG8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NTY6XHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjU3LVx0XHRpZiAobXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QgIT0gbXNnYnVmLVx1MDAzZXJ4YnVmcG9zdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY2Mi1cdH0gd2hpbGUgKGNvdW50IFx1MDAzYyAxMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2MzpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2NDpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTExCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgYXMgYW4gZXhwZXJpZW5jZWQgZW5naW5lZXI6CgoqKkFuYWx5emluZyBNZXNzYWdlIEJ1ZmZlciBQcm9jZXNzaW5nIGluIHRoZSBicmNtZiBEcml2ZXIqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21lIG1vZGlmaWNhdGlvbnMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbXBhY3QuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgc2VlbSBmb2N1c2VkIG9uIHRoZXNlIGZ1bmN0aW9uczogYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBUaGVzZSBhcmUgYWxsIHByb2Nlc3NpbmcgbWVzc2FnZXMgb3IgaGFuZGxpbmcgcmVzcG9uc2VzIHJlbGF0ZWQgdG8gdHJhbnNtaXQgc3RhdHVzIG9yIGZsb3cgcmluZyBvcGVyYXRpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhlc2UgY2hhbmdlcy4KCkkgc2VlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2FsbGVkIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgbGlrZWx5IGEgZGlzcGF0Y2hlciB0aGF0IHJvdXRlcyBtZXNzYWdlcyBiYXNlZCBvbiB0aGVpciB0eXBlLiBUaGVuIEkgc2VlIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBaC1oYSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBmcm9tIHRoZSBQQ0lFIGRyaXZlciYjMzk7cyBpbnRlcnJ1cHQgaGFuZGxlciBvciBhIHRhc2tsZXQuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgcHJvY2Vzc2luZywgb3IgZGVmZXJyZWQgaW50ZXJydXB0IHByb2Nlc3NpbmcsIHdoaWNoIGlzIHZlcnkgY29tbW9uIGluIGRyaXZlciBkZXZlbG9wbWVudC4gVGhpcyBhbHNvIGdpdmVzIGEgaGludCBhcyB0byB0aGUgdGltaW5nIGFuZCBjb25jdXJyZW5jeSBjb25zdHJhaW50cyB0aGF0IGFyZSBpbiBwbGF5LgoKTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBvdGhlciBjYWxsZXJzIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgbmV3IGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCwgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIGlzc3Vlcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY2FsbCBncmFwaCBmb3IgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9SWF9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE1LVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE2Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQxMAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIHRoZSBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlciBGdW5jdGlvbioqCgpPa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIGNsZWFybHkgdGhlIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgZW50cnkgcG9pbnQsIGlmIHlvdSB3aWxsLiBUaGUgZmxvdyBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLCBhbmQgdGhpcyBpcyBpdCBmb3IgdGhlIG1lc3NhZ2UgYnVmZmVyIHJlY2VpdmUuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSB1cHN0cmVhbSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gdGhpcyBmdW5jdGlvbiBnZXR0aW5nIGludm9rZWQuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSByZWFsIGdyYXNwIG9mIGhvdyBkYXRhIGZsb3dzIGludG8gdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY3Jvc3MtcmVmZXJlbmNlcyB0ZWxsIHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQwMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzItdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTU1LVx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjk1NjpcdFx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXHRcdFx0XHRcdFx0XHRcdTAwMjZkZXZpbmZvLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcG90ZW50aWFsIHRhcmdldCBoZXJlLCBzdGFydGluZyB3aXRoIGBicmNtZl9wY2llX2lzcl90aHJlYWRgLiBUaGF0JiMzOTtzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIFBDSUUgZGV2aWNlLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIHByb2JlZCBhbmQgaW50ZXJydXB0cyBhcmUgb2NjdXJyaW5nIOKAkyBhIGdvb2Qgc2lnbiEgQW5kIHllcywgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGEgbmV0d29yayBkcml2ZXIuIFNvLCBpcyBmdXp6aW5nIHdhcnJhbnRlZD8gQWJzb2x1dGVseS4KCkluaXRpYWxseSwgSSB6ZXJvZWQgaW4gb24gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBIb3dldmVyLCB0aGUgcHJvbXB0IHN0cmVzc2VzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyDigJMgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBjYW4gYmUgaW5saW5lZCBhbmQgZG9uJiMzOTt0IG9mZmVyIGRpc3RpbmN0IHN5bWJvbHMgZm9yIHVzIHRvIHRhcmdldC4gV2FpdCBhIG1pbnV0ZSwgYWxsIHRob3NlIGZ1bmN0aW9ucyAqYXJlKiBzdGF0aWMuCgpUaGUgYWN0dWFsIGVudHJ5cG9pbnQgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBJIG5lZWQgdG8gY29uZmlybSBpdCYjMzk7cyBub24tc3RhdGljLCBhbmQgdGhhbmtmdWxseSwgaXQgaXMuIExvb2tzIGxpa2UgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdC4KCk5vdywgY2hlY2tpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfUENJRWAsIGFuZCBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCAod2hpY2ggaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBieSBgQlJDTUZNQUNfUENJRWApLiBMZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhvc2UgZGVwZW5kZW5jaWVzIGZvciBgQlJDTUZNQUNfUENJRWAgYXJlIGFsbCBzYXRpc2ZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19QQ0lFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0yOT1jb25maWcgQlJDTUZNQUNfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3NgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJSQ01GTUFDIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYnJjbWZtYWNgIG1vZHVsZSwgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIGZvY3VzIG9uIGFyb3VuZCBsaW5lIDQwIHRvIHNlZSB3aGF0IHRoZSBpbml0aWFsIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZCB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gc2VlIGhvdyB0aGUgbW9kdWxlIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBpdCYjMzk7cyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBCUkNNRk1BQ19QQ0lFXG4gIDQxOlx0XHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDQ6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgNDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDQ4Olx0XHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICA0OTpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY4OAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQlJDTUZNQUMgYW5kIEJSQ01GTUFDX1BDSUUgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfUENJRWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb21wYXJlIGFuZCBjb250cmFzdCB0aGVtLiBIYW5nIG9uLCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeS4gSXMgYEJSQ01GTUFDYCBhIGJhc2UgY29uZmlndXJhdGlvbiB0aGF0IGBCUkNNRk1BQ19QQ0lFYCBidWlsZHMgdXBvbiwgb3IgaXMgdGhlcmUgYW5vdGhlciByZWxhdGlvbnNoaXAgaW4gcGxheT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBCUkNNRk1BQ2AgaGFzIHByZXJlcXVpc2l0ZXMgb3IgaWYgaXQgcmVsaWVzIG9uIG90aGVyIG1vZHVsZXMgdG8gZnVuY3Rpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGludGVncmF0aW9uIGFuZCBob3cgYW55IG1vZGlmaWNhdGlvbnMgY2FzY2FkZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgd2lsbCBsb29rIGZvciBhbnkgZGVwZW5kZW5jaWVzIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIEJSQ01GTUFDXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA0Olx0XHRzZWxlY3QgQlJDTVVUSUxcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxuICAgNzpcdFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXG4gICA4Olx0XHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkXG4gICA5Olx0XHQgIGJyY21mbWFjLmtvLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDEyOlx0XHRib29sXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBCUkNNRk1BQ19TRElPXG4gIDE4Olx0XHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcbiAgMjA6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyMTQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJSQ01GTUFDIE1vZHVsZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgQlJDTUZNQUNgIG1vZHVsZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nOyBpdCYjMzk7cyBhIHByZXR0eSBmdW5kYW1lbnRhbCB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gU28sIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBDRkc4MDIxMWAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LCBhbmQgdGhlbiBhbHNvIGBCUkNNRk1BQ2AgaXRzZWxmLCBhbG9uZyB3aXRoIGBCUkNNRk1BQ19QQ0lFYCBzaW5jZSBpdCBtaWdodCBiZSBQQ0ktc3BlY2lmaWMuCgpIb2xkIG9uIGEgc2VjLi4uIGBCUkNNRk1BQ19QQ0lFYCBkZXBlbmRzIG9uIGBQQ0lgLiBPa2F5LCAqdGhhdCogZGVwZW5kZW5jeSBpcyBhbG1vc3QgYWx3YXlzIHNhdGlzZmllZDsgUENJJiMzOTtzIHVzdWFsbHkgYmFrZWQgaW4gdG8gdGhlIHN5c3RlbS4gU3RpbGwsIHdvcnRoIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgbm90aGluZyYjMzk7cyBiZWVuIGluYWR2ZXJ0ZW50bHkgZGlzYWJsZWQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZWFsbHkgbG9vayBpbnRvIGhvdyB0aGVzZSBtZXNzYWdlIGJ1ZmZlcnMgYXJlIGhhbmRsZWQuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHdpdGhpbiB0aGUgYGJyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZHJpdmVyIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIG1vZHVsZSBhY3R1YWxseSBoYW5kbGVzIGluY29taW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDAwOlx0fVxuMTQwMTpcdFxuMTQwMjpcdFxuMTQwMzpcdGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4xNDA0Olx0e1xuMTQwNTpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4xNDA2Olx0XHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVx1MDAzZWRydnI7XG4xNDA3Olx0XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQ7XG4xNDA4Olx0XHRzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZztcbjE0MDk6XHRcdHZvaWQgKmJ1ZjtcbjE0MTA6XHRcdHUzMiBmbG93aWQ7XG4xNDExOlx0XHRpbnQgcWxlbjtcbjE0MTI6XHRcbjE0MTM6XHRcdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG4xNDE0Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG4xNDE1Olx0XHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfVFhfQ09NUExFVEVdO1xuMTQxNjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuMTQxNzpcdFx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX0NPTlRST0xfQ09NUExFVEVdO1xuMTQxODpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuMTQxOTpcdFxuMTQyMDpcdFx0Zm9yX2VhY2hfc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cdTAwM2V0eHN0YXR1c19kb25lX21hcCxcbjE0MjE6XHRcdFx0XHQgbXNnYnVmLVx1MDAzZW1heF9mbG93cmluZ3MpIHtcbjE0MjI6XHRcdFx0Y2xlYXJfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwKTtcbjE0MjM6XHRcdFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbjE0MjQ6XHRcdFx0cWxlbiA9IGJyY21mX2Zsb3dyaW5nX3FsZW4obXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTQyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVNHQlVGIFJpbmcgUHJvY2Vzc2luZyoqCgpPa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHRoZSBjb3JlIGVudHJ5IHBvaW50LCB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoZSBwcm9jZXNzaW5nIG9mIE1TR0JVRiByaW5ncy4gTm8gcXVlc3Rpb24gdGhlcmUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoOyBhcmUgdGhlcmUgYW55ICpvdGhlciogcG9zc2libGUgZW50cnkgcG9pbnRzIEkmIzM5O20gb3Zlcmxvb2tpbmc/CgpMZXQmIzM5O3MgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCBiYWNrLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBbmQgZmluYWxseSwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvcmlnaW5hdGVzIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4KCkFoLCB0aGVyZSYjMzk7cyB0aGUgY29uZmlybWF0aW9uLiBUaGUgY2FsbCBzdGFjayBtYWtlcyBpdCBjbGVhci4gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBhY3RzIGFzIHRoZSByb290LCBpdCYjMzk7cyB0aGUgcGVyZmVjdCBmdW5jdGlvbiB0byB0YXJnZXQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiB3YXkgdG8gcmVhY2ggYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYC4gSnVzdCB3YW50IHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgYWx0ZXJuYXRpdmUgcGF0aHMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9ODk4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODk5OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1Ny1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7TVNHQlVGX1RZUEVfVFhfU1RBVFVTXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzU4Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1OS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTUwCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBmb2N1c2luZyBvbiB0aGUgY29yZSBjb25jZXB0OgoKKipOYXJyb3dpbmcgdGhlIEZvY3VzOiBUaGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIEZ1bmN0aW9uKioKCk15IG1pbmQgaXMgbGFzZXItZm9jdXNlZCByaWdodCBub3cuIEkmIzM5O20gZHJpbGxpbmcgZG93biB0byBhIHNwZWNpZmljIGZ1bmN0aW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIHByb2Nlc3NpbmcgaXMgaGFwcGVuaW5nLCBhbmQgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLiBObyBkaXN0cmFjdGlvbnMsIG5vIGV4dHJhbmVvdXMgY29udGV4dCwganVzdCB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyB0aGUgcGl2b3RhbCBwb2ludCBpbiB0aGlzIHdob2xlIHN5c3RlbSwgdGhlIGxpa2VseSBmdWxjcnVtIG9mIHRoZSBlbnRpcmUgbWVzc2FnZSBoYW5kbGluZyBwcm9jZXNzLCBhbmQgd2hhdCBoYXMgZHJhd24gbXkgaW1tZWRpYXRlIGF0dGVudGlvbi4gQWxsIG90aGVyIGNvbnNpZGVyYXRpb25zIGNhbiB3YWl0OyB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBtZXNzYWdlIHR5cGVzLCBhcmUgcGFyYW1vdW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI5Mz1icmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIyOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzNzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg0LVx0d2hpbGUgKGNvdW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM4NTpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM4Ni1cdFx0XHRcdFx0ICAgICBidWYgJiM0MzsgbXNnYnVmLVx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU2OQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgc29sZWx5IG9uIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGA6CgoqKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAqKgoKT2theSwgc28gdGhlIHRob3VnaHQgdHJhaW4gaGFzIG5hcnJvd2VkIGRvd24gdG8ganVzdCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCB0ZWxscyBtZSB0aGF0IHRoZSBmb2N1cyBpcyAqZXhjbHVzaXZlbHkqIG9uIGhhbmRsaW5nIHJlY2VpdmVkIG1lc3NhZ2VzIHdpdGhpbiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgb24gdGhlIHJlY2VpdmVyIHNpZGUgb2YgdGhlIGNvbW11bmljYXRpb24uIE5vdGhpbmcgZWxzZSBpcyB1bmRlciBjb25zaWRlcmF0aW9uIHJpZ2h0IG5vdyDigJMgbm8gdHJhbnNtaXQgcGF0aHMsIGluaXRpYWxpemF0aW9uLCBvciBlcnJvciBoYW5kbGluZyBiZXlvbmQgd2hhdCYjMzk7cyBpbnRyaW5zaWMgdG8gdGhlIHJlY2VpdmUgcHJvY2Vzcy4KCkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZldyBrZXkgcXVlc3Rpb25zLiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBJcyB0aGlzIGJlaW5nIGFuYWx5emVkIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgYSBzcGVjaWZpYyBidWcsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIG9yIHNpbXBseSBhIGdlbmVyYWwgY29kZSByZXZpZXcgcmVsYXRlZCB0byByZWNlaXZlIG1lc3NhZ2UgcHJvY2Vzc2luZz8gVW5kZXJzdGFuZGluZyB0aGUgaW5wdXQgYW5kIG91dHB1dCBmbG93cyB0byBhbmQgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsLiBXaGF0IGtpbmQgb2YgYnVmZmVyaW5nIGlzIGludm9sdmVkLCBhbmQgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byB0aGluayBhYm91dD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBETUEgb3IgQ1BVLWRyaXZlbiBtZXNzYWdlIHByb2Nlc3NpbmcgaGVyZT8KClNpbmNlIGl0JiMzOTtzIGZvY3VzZWQgb24gYHJ4YCwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRhdGEgdmFsaWRhdGlvbiwgbWVzc2FnZSBwYXJzaW5nLCBhbmQgaG93IHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBtZXNzYWdlIGl0JiMzOTtzIHJlY2VpdmVkLiBJcyB0aGVyZSBhbnkgcGFydGljdWxhciBtZXNzYWdlIHR5cGUgb3IgdHlwZXMgdGhhdCBhcmUgY2F1c2luZyBjb25jZXJuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBjb25kaXRpb25zIHRoYXQgY291bGQgY29tcHJvbWlzZSBzZWN1cml0eT8gVGhlIGludHJpY2FjaWVzIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBtYW5hZ2VtZW50IGJlY29tZSBwYXJhbW91bnQg4oCTIG1lbW9yeSBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIGFuZCB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgaW50ZWdyaXR5IG9mIHRoZSBkYXRhIGl0IGNvbnRhaW5zLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGhhcyB0byBiZSB3ZWxsLXZldHRlZC4gSXRzIHZ1bG5lcmFiaWxpdHkgY2FuIGNvbXByb21pc2UgdGhlIGVudGlyZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9SWF9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE1LVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE2Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgRW50cnkgUG9pbnQqKgoKT2theSwgc28gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyB0aGUgc29sZSBlbnRyeSBwb2ludCwgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBjb25maXJtIGlmIGl0JiMzOTtzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEV4YW1pbmluZyB0aGUgY29kZSwgaXQmIzM5O3MgaW5kZWVkIHRoZSBkZXNpZ25hdGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBSWCBtZXNzYWdlcyBvcmlnaW5hdGluZyBmcm9tIHRoZSBkZXZpY2UuIENydWNpYWxseSwgaXQmIzM5O3MgaW52b2tlZCBkaXJlY3RseSBmcm9tIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIGl0JiMzOTtzIGFsc28gbm9uLXN0YXRpYy4gVGhvc2UgZmFjdG9ycyBwb2ludCB0byBpdHMgc2lnbmlmaWNhbmNlLiBZZXMsIGl0JiMzOTtzIGEgc3Ryb25nIGZvY3VzIHBvaW50LgoKTm93LCBsZXQmIzM5O3MgZXN0YWJsaXNoIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgIGFzIHBvdGVudGlhbCBmbGFncy4gQWgsIGEgZGVwZW5kZW5jeSBpcyBhcHBhcmVudDogYEJSQ01GTUFDYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFdlIGtub3cgYENGRzgwMjExYCBpcyB0cmlzdGF0ZSwgYnV0IGxpa2VseSB3aWxsIGJlIHNldC4gRnVydGhlcm1vcmUsIGBCUkNNRk1BQ19QQ0lFYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEJSQ01GTUFDYCBhbmQgYFBDSWAuIFNpbmNlIGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBtb3N0IHN5c3RlbXMsIHdlIGNhbiBzYWZlbHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuCgpKdXN0IHRvIGVuc3VyZSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGBDRkc4MDIxMWAgaXRzZWxmIGhhcyBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzkxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBDRkc4MDIxMSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDRkc4MDIxMWAgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCByZWxpZXMgb24gYFJGS0lMTCB8fCAhUkZLSUxMYC4gVGhhdCBzZWVtcyBhIGJpdC4uLnJlZHVuZGFudCwgZG9lc24mIzM5O3QgaXQ/IEl0JiMzOTtzIGJhc2ljYWxseSBhbHdheXMgZW5hYmxlZC4gVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGdvaW5nIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnN1bHQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGFjdHVhbCBsb2dpYzsgSSYjMzk7bGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSAxNywgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhvc2UgY29tcG9uZW50cyBhcmUuIEkgaGF2ZSBhIGh1bmNoIHRoZXJlJiMzOTtzIG1vcmUgdG8gdGhpcyB0aGFuIG1lZXRzIHRoZSBleWUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IHBvdGVudGlhbCBjb25kaXRpb25hbCBpbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTc2CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVwZW5kZW5jeSB0cmVlOiBgQ0ZHODAyMTFgIGhpbmdlcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBTaW5jZSBgUkZLSUxMYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhhdCBnaXZlcyB1cyBhIHN0YXJ0aW5nIHBvaW50LiBBbmQgb2YgY291cnNlLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXJlIHRvIGZvY3VzIHRoZSBmdXp6aW5nLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBtaWdodCBiZSBhIGdvb2QgdGFyZ2V0LiBJdCYjMzk7cyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWF0ZXMgdGhlIHByb2Nlc3Npbmcgb2YgaW5jb21pbmcgUlggbWVzc2FnZXMgZnJvbSB0aGUgZGV2aWNlLCBhbmQgY3J1Y2lhbGx5LCBpdCBnZXRzIGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gSW1wb3J0YW50bHksIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBMZXQmIzM5O3Mgc2VlLi4uIHllcCwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgZ29vZCBmaXJzdCBjYW5kaWRhdGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZXhwbG9yZSByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIHNlZW1zIHRvIHRvdWNoIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYW5kIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlYC4gVGhlc2UgYWxsIGZlZWQgaW50byBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4gQW5kIGZpbmFsbHksIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaXMgY2FsbGVkIGJ5IG91ciBpbml0aWFsIHRyaWdnZXIsIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIFNvLCB0aGUgY2FsbCBzdGFjayBzb2xpZGlmaWVzIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGJlc3QgaW5pdGlhbCBmb2N1cy4KCldhaXQgYSBzZWNvbmQuLi4gSSBzZWUgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYC4gTm93IEkmIzM5O20gd29uZGVyaW5nIGlmICp0aGF0KiBpcyBhIGJldHRlciB0YXJnZXQ/IE9oLCBidXQgYGJyY21mX3BjaWVfaXNyX3RocmVhZGAgaXMgc3RhdGljLi4uIHNvIG5vLCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHN0aWxsIHRoZSBzdXBlcmlvciBjaG9pY2UuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgZW50cnkgcG9pbnRzIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4uLiBzZWVtcyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvbmx5IGdldHMgY2FsbGVkIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4gRXhjZWxsZW50LiBUaGF0IGNvbmZpcm1zIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExNzQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTc1OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzIyPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjEtXHRcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O01TR0JVRl9UWVBFX1JYX0NNUExUXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzYyOlx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM3MTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM3Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTQwMz1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDEzLVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE0Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfVFhfQ09NUExFVEVdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxNy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19DT05UUk9MX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE4Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQ2CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDI3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcm9hZGNvbSBXTEFOIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIG5vIG90aGVyIGFjdGl2ZSBpbnZlc3RpZ2F0aW9ucyBhdCB0aGUgbW9tZW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhpcyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHN5bWJvbC4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBpdCYjMzk7cyB0aWVkIHRvIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBzcGVjaWZpY2FsbHkgYEJSQ01GTUFDX1BDSUVgLCBzbyB0aGlzIGlzIGEgUENJZS1yZWxhdGVkIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIGlzc3VlLgoKVGhlIHN1bW1hcnkgZGVzY3JpYmVzIGEgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgYGJyY21mbWFjYCBkcml2ZXIuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggaW50byBgbXNnYnVmLSZndDtmbG93cmluZ3NgLiBNYWtlcyBzZW5zZTsgdGhhdCYjMzk7cyB0aGUgY2xhc3NpYyBhcnJheSBhY2Nlc3MgdnVsbmVyYWJpbGl0eS4gVGhlIHZ1bG5lcmFibGUgZnVuY3Rpb25zLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAsIGFyZSBhbGwgdHJpZ2dlcmVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wg4oCTIHdoaWNoIGlzIGEgUENJRS1zcGVjaWZpYyB0aGluZy4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgZXhwbG9pdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBhIGtleSBwb2ludCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nIGxpa2Ugc3l6a2FsbGVyLiBUaGUgY29kZSBjaGFuZ2UgYWZmZWN0cyBjb3JlIGRyaXZlciBmdW5jdGlvbmFsaXR5LgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIEl0JiMzOTtzIG5vbi1zdGF0aWMsIGRlY2xhcmVkIGluIGBtc2didWYuaGAuIFRoaXMgY29uZmlybXMgaXQmIzM5O3MgYSBnb29kIGZvY2FsIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEl0IHNlZW1zIHdlIGhhdmUgYSByZWFzb25hYmx5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19QQ0lFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXImIzM5O3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19QQ0lFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXImIzM5O3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDMuNTYwNDE5MDQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTU4ODg0NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfUENJRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXFx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJ3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0My41NjA0MjU0NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjE1OTk4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAzNWQ2YmEyZWJkY2U3Yzg5MzNmYzFmOGQyZmNjZGEyYWJjMjQyNmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXFxuaW5kZXggYmExY2UxNTUyZTBmNDMuLjgxNDZkNTBkNmYwNzJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbkBAIC01NjAsNiArNTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVxcdTAwM2VmbG93LCBmbG93aWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuK1xcdFxcdFxcdFxcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcXG4re1xcbitcXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XFxuK1xcbitcXHRpZiAoaWQgXFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XFxuK1xcdFxcdGJwaHlfZXJyKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgXFxcImludmFsaWQgZmxvd3JpbmcgaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBmbG93X3JpbmdfaWQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGlmIChpZCBcXHUwMDNlPSBtc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpIHtcXG4rXFx0XFx0YnBoeV9lcnIobXNnYnVmLVxcdTAwM2VkcnZyLCBcXFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZsb3dfcmluZ19pZCk7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0KmZsb3dpZCA9IGlkO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqXFxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbkBAIC04ODAsMTcgKzkwMiwyMyBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4gXFx0c3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKnR4X3N0YXR1cztcXG4gXFx0dTMyIGlkeDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0dTE2IGZsb3dfcmluZ19pZDtcXG4gXFx0dTE2IGZsb3dpZDtcXG4gXFxuIFxcdHR4X3N0YXR1cyA9IChzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqKWJ1ZjtcXG4gXFx0aWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vtc2cucmVxdWVzdF9pZCkgLSAxO1xcbi1cXHRmbG93aWQgPSBsZTE2X3RvX2NwdSh0eF9zdGF0dXMtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4gXFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzLCBpZHgpO1xcbiBcXHRpZiAoIXNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpIHtcXG4rXFx0XFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgdHhfc3RhdHVzLVxcdTAwM2Vtc2cuaWZpZHgpLFxcbitcXHRcXHRcXHRcXHQgc2tiLCBmYWxzZSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0c2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xcbiBcXHRjb21tb25yaW5nID0gbXNnYnVmLVxcdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcXG4gXFx0YXRvbWljX2RlYyhcXHUwMDI2Y29tbW9ucmluZy1cXHUwMDNlb3V0c3RhbmRpbmdfdHgpO1xcbkBAIC0xMjM3LDEzICsxMjY1LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcXG4gXFx0dTE2IHN0YXR1cztcXG4gXFx0dTE2IGZsb3dpZDtcXG4rXFx0dTE2IGZsb3dfcmluZ19pZDtcXG4gXFxuIFxcdGZsb3dyaW5nX2NyZWF0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfY3JlYXRlX3Jlc3AgKilidWY7XFxuIFxcbi1cXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuLVxcdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xcbitcXHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuIFxcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLnN0YXR1cyk7XFxuIFxcbitcXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcXHUwMDI2Zmxvd2lkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKHN0YXR1cykge1xcbiBcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbiBcXHRcXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcXG5AQCAtMTI2NiwxMyArMTI5NywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XFxuIFxcdHUxNiBzdGF0dXM7XFxuIFxcdHUxNiBmbG93aWQ7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcbiBcXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xcbiBcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbiBcXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGlmIChzdGF0dXMpIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG4gXFx0XFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDMuOTYzMjc5MzgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAzNTU2MDE1NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfUENJRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXFx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJ3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMzVkNmJhMmViZGNlN2M4OTMzZmMxZjhkMmZjY2RhMmFiYzI0MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IGJhMWNlMTU1MmUwZjQzLi44MTQ2ZDUwZDZmMDcyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5AQCAtNTYwLDYgKzU2MCwyOCBAQCBicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnJjbWZfbXNnYnVmX2dldF9mbG93aWQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuK1x0XHRcdFx0ICAgIHUxNiBmbG93X3JpbmdfaWQsIHUxNiAqZmxvd2lkKVxuK3tcbitcdHUzMiBpZCA9IGZsb3dfcmluZ19pZDtcbitcbitcdGlmIChpZCBcdTAwM2MgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkge1xuK1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCJpbnZhbGlkIGZsb3dyaW5nIGlkICV1XFxuXCIsXG4rXHRcdFx0IGZsb3dfcmluZ19pZCk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XG4rXHRpZiAoaWQgXHUwMDNlPSBtc2didWYtXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xuK1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCJpbnZhbGlkIGZsb3dyaW5nIGlkICV1XFxuXCIsXG4rXHRcdFx0IGZsb3dfcmluZ19pZCk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdCpmbG93aWQgPSBpZDtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuQEAgLTg4MCwxNyArOTAyLDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0c3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKnR4X3N0YXR1cztcbiBcdHUzMiBpZHg7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBtc2didWYtXHUwMDNldHhfcGt0aWRzLCBpZHgpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpIHtcbitcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbitcdFx0XHRcdCBza2IsIGZhbHNlKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0c2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cdTAwM2V0eHN0YXR1c19kb25lX21hcCk7XG4gXHRjb21tb25yaW5nID0gbXNnYnVmLVx1MDAzZWZsb3dyaW5nc1tmbG93aWRdO1xuIFx0YXRvbWljX2RlYyhcdTAwMjZjb21tb25yaW5nLVx1MDAzZW91dHN0YW5kaW5nX3R4KTtcbkBAIC0xMjM3LDEzICsxMjY1LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqZmxvd3JpbmdfY3JlYXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjY2LDEzICsxMjk3LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0My45NjMyODA0MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQ4ODY3ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiB0aGUgYGJyY21mbWFjYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgLCB0byB2YWxpZGF0ZSB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHN1YnRyYWN0aW5nIGBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gZGVhbGluZyB3aXRoIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzW2Zsb3dpZF1gIGFuZCBzaW1pbGFyIGFycmF5IGFjY2Vzc2VzLiBHb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IElzIHRoaXMgcGF0Y2ggZXZlbiByZWxldmFudCB0byBvdXIgZnV6emluZyBlZmZvcnRzPyBgYnJjbWZtYWNgIGlzIGEgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIEhtbSwgY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gV2UgdXN1YWxseSBoYXZlIGx1Y2sgZnV6emluZyB3aXJlbGVzcyBkcml2ZXJzIGlmIHRoZXkncmUgZXhwb3NlZCB0aHJvdWdoIFVTQiwgU0RJTywgb3Igc29tZSBraW5kIG9mIHZpcnR1YWwgYnVzLiBUaGUgZ29vZCBuZXdzIGlzIGBicmNtZm1hY2Agc3VwcG9ydHMgU0RJTywgVVNCLCBhbmQgUENJRS5cblxuU28sIFVTQiBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUuIFdlIHNob3VsZCBiZSBhYmxlIHRvIGhvb2sgaXQgdXAgdXNpbmcgZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuIFNESU8gbWlnaHQgYmUgcG9zc2libGUgdG9vLCAqaWYqIHdlIGNhbiBmaW5kIG9yIGJ1aWxkIGFuIGVmZmVjdGl2ZSBTRElPIGZ1enplci4gQnV0IFVTQiBpcyB0aGUgbW9yZSBwcm9taXNpbmcgcm91dGUuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBpcyBhY3R1YWxseSB1c2VkIGZvciBVU0IuIExldCdzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLCBvciByZWxhdGVkIFVTQi1zcGVjaWZpYyBjb2RlLiBXYWl0LCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2UsIEkgYmVsaWV2ZSBgbXNnYnVmLmNgIGlzIHVzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIFBDSUUgbW9yZSBvZnRlbi4gTGV0IG1lIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI2LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDkuNzEyMTUwOTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDkwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg5OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTctXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1RYX1NUQVRVU1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0OS43NzQ2NDg3MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYyMDU2NjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIENvbXBpbGF0aW9uIG9mIGBtc2didWYuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXNnYnVmLmNgIGlzIGJlaW5nIGNvbXBpbGVkIHdpdGhpbiB0aGlzIGJ1aWxkIHN5c3RlbS4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHdoaWNoIG1lYW5zIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgcnVsZXMgdGhhdCBhcHBseSB0byB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUuXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgbWFrZWZpbGVzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLiBJcyB0aGVyZSBhIHRvcC1sZXZlbCBgTWFrZWZpbGVgIG9yY2hlc3RyYXRpbmcgZXZlcnl0aGluZywgb3IgaXMgaXQgYSBtb3JlIGRlY2VudHJhbGl6ZWQgc3RydWN0dXJlPyBMaWtlbHkgdGhlcmUgYXJlIGluY2x1ZGUgc3RhdGVtZW50cyB0byBvdGhlciBgTWFrZWZpbGVgcy4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBhdCBhbnkgYE1ha2VmaWxlYCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIHRoZSBzdXJyb3VuZGluZyBkaXJlY3Rvcmllcy4gRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwgb2YgaW5jbHVkZSBkaXJlY3RpdmVzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGxpa2UgY29tcGlsZXIgaW52b2NhdGlvbnMsIG9iamVjdCBmaWxlIHRhcmdldHMsIGFuZCBkZXBlbmRlbmN5IHJ1bGVzIHRoYXQgZXhwbGljaXRseSBvciBpbXBsaWNpdGx5IGludm9sdmUgYG1zZ2J1Zi5jYC4gTG9vayBmb3IgYW55dGhpbmcgbGlrZSBgJChDQykgLWMgLi4uIG1zZ2J1Zi5jYCwgb3IgcG90ZW50aWFsbHkgbW9yZSBjb21wbGV4IGJ1aWxkIHJlY2lwZXMgdGhhdCBpbmNvcnBvcmF0ZSBpdCB0aHJvdWdoIGhlYWRlcnMgb3IgbGlicmFyaWVzLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIGRpZmZlcmVudCBjb21waWxhdGlvbiB0YXJnZXRzLlxuXG5JZiB0aGVyZSBpcyBhIG1vcmUgY29tcGxleCBidWlsZCBzeXN0ZW0gaW4gdXNlLCBsaWtlIGBhdXRvdG9vbHNgIG9yIGBDTWFrZWAsIEknbGwgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIFRoZXkgbWlnaHQgdXNlIGdlbmVyYXRlZCBtYWtlZmlsZXMgb3IgaGF2ZSB0aGVpciBvd24gY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IGRlZmluZSBidWlsZCB0YXJnZXRzIGFuZCBkZXBlbmRlbmNpZXMuIEluIHRoYXQgY2FzZSwgSSdkIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZ2VuZXJhdGVkIG1ha2VmaWxlIGFuZCB3aGF0IHRvb2wgZ2VuZXJhdGVkIGl0LlxuXG5VbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiB1c2VkIHRvIGNvbXBpbGUgYG1zZ2J1Zi5jYCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucywgYW5kIG90aGVyIHJlbGV2YW50IGJ1aWxkIHNldHRpbmdzLiBUaGF0J2xsIGdpdmUgbWUgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo1My44MzY3MDc5MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMzM5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXNnYnVmXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlPTMyPWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRikgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM0LVxcdFxcdGZsb3dyaW5nLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTozNTpcXHRcXHRtc2didWYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS0zNi1icmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSArPSBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUxOjUzLjg5OTc0NjY1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzYzMzg1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRmAgU2VsZWN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHRyaWdnZXJzIHRoYXQgbGVhZCB0byB0aGUgaW5jbHVzaW9uIG9mIGBDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBpbiBhIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGxpa2VseSByZWxhdGVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSBcIlBST1RPX01TR0JVRlwiIHN1ZmZpeCBpcyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIG9yIGJ1ZmZlcmluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gdXNlIGEgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IGNvZGUgcGF0aHMgcmVzcG9uc2libGUgZm9yIGNvbmRpdGlvbmFsbHkgZW5hYmxpbmcgdGhhdCBzeW1ib2wsIHByb2JhYmx5IHRocm91Z2ggYSBgS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbW9kdWxlcyBvciBmZWF0dXJlcyB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlcGVuZGVudCBvbi5cblxuSSBzaG91bGQgYWxzbyBjb25zaWRlciBpZiB0aGlzIGNob2ljZSBpcyBhIFwiZGVmYXVsdFwiIGZvciBhIGJvYXJkLCBidXQgbW9yZSBsaWtlbHkgaXMgZGV0ZXJtaW5lZCBieSBvdGhlciBzZXR0aW5ncyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNvbnNpZGVyIHJlbGF0ZWQgb3B0aW9ucyBpbiB0aGUgYEJSQ01GTUFDYCBrY29uZmlnIGZpbGUsIG9yIHBvc3NpYmx5IGluIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhhdCBjb3VsZCBkZXRlcm1pbmUgdGhpcyBvcHRpb24uXG5cbk9uY2UgSSd2ZSBpZGVudGlmaWVkIHRoZSBkZXBlbmRlbmNpZXMsIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgYENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUZgLiBXaGF0IGFyZSB0aGUgcmVzb3VyY2UgdHJhZGVvZmZzPyBJcyBpdCByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIChwZXJoYXBzIG9mZmxvYWRpbmcgbWVzc2FnZSBwcm9jZXNzaW5nKT8gRG9lcyBpdCBlbmFibGUgc3BlY2lmaWMgd2lyZWxlc3MgZmVhdHVyZXMgbGlrZSBoYXJkd2FyZSBvZmZsb2FkLCBvciBpcyBpdCBtb3JlIG9mIGFuIGludGVybmFsIGRyaXZlciBvcHRpbWl6YXRpb24gZm9yIGEgcGFydGljdWxhciBoYXJkd2FyZSBnZW5lcmF0aW9uPyBJJ2xsIHByb2JhYmx5IGhhdmUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoZSByZWxldmFudCBjb2RlIHdpdGggdGhlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gb3IgYSBkYXRhc2hlZXQsIGlmIGl0J3MgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NTcuNzM2MDg3MTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjY2NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xMT1jb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NTcuODg1NzU3ODgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4MzAyNzE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBIZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwcm92aWRlZCB0ZXh0IGFzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgbXkgdGhvdWdodCBwcm9jZXNzLCBhbmQgYXNzdW1pbmcgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbiBoZXJlLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCB0aGUgcHJvY2VzcyBpcyB0cnlpbmcgdG8gc2VsZWN0LiBJcyBpdCBhIHNwZWNpZmljIGVsZW1lbnQsIGEgZGF0YSBwb2ludCwgYW4gYWxnb3JpdGhtPyBXaGF0IGFyZSB0aGUgaW5oZXJlbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHdoYXRldmVyJ3MgYmVpbmcgc2VsZWN0ZWQ/IFVuZGVyc3RhbmRpbmcgdGhlICppbnB1dHMqIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gdGhpbmsgYWJvdXQgdGhlIHNlbGVjdGlvbiBtZWNoYW5pc20gaXRzZWxmLiBJcyBpdCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQsIGEgY29tcGxleCB3ZWlnaHRpbmcgc3lzdGVtLCBvciBzb21ldGhpbmcgbW9yZSBhZHZhbmNlZCBsaWtlIGEgbWFjaGluZSBsZWFybmluZyBtb2RlbCBhdCBwbGF5PyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLiBNeSBleHBlcmllbmNlIGRpY3RhdGVzIHRoYXQgSSBtdXN0IGxvb2sgY2xvc2VseSBhdCB0aGUgZGF0YS4gSSd2ZSBzZWVuIGl0IGFsbCwgYW5kIGtub3cgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MDAuODY4Nzg3NjE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE3MDczOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTQwPWNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0OlxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00NS1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjAxLjAxMDUwMTMyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjE1NDcwMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgQlJDTUZNQUMqKlxuXG5Pa2F5LCBzbyBgQlJDTUZNQUNfUENJRWAgc2VsZWN0cyBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogYEJSQ01GTUFDX1BDSUVgPyBUaGUgYW5zd2VyIGhpbmdlcyBvbiBQQ0ksIG5hdHVyYWxseS4gQW5kLCBjYW4gd2UgZnV6eiBQQ0kgZGV2aWNlcyB3aXRoaW4gUUVNVT8gR2VuZXJhbGx5LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enoganVzdCAqYW55KiBQQ0kgZGV2aWNlIHVubGVzcyB0aGVyZSdzIHNwZWNpZmljIHN1cHBvcnQgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9yZSBnZW5lcmljIFBDSSBmdXp6aW5nIG1lY2hhbmlzbS4gQWgsIGJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHZmaW8vcGNpYC5cblxuTm93LCB0aGUgcHJvbXB0IGJyaW5ncyB1cCBhIGNyaXRpY2FsIGNhdmVhdDogY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIGxpa2UgdGhvc2UgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFyZSBleGNsdWRlZC4gSXMgYGJyY21mbWFjYCBvbmUgb2YgdGhvc2U/IEl0J3MgYSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgc28sIGl0J3MgZGVmaW5pdGVseSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKmxpa2UqIHRob3NlIGV4Y2x1ZGVkIHR5cGVzP1xuXG5Ib2xkIG9uLi4uIEknbSBzZWVpbmcgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIFRoYXQgbWVhbnMgc3l6a2FsbGVyICpmb3VuZCogdGhpcyBidWcsIGFuZCB0aGlzIGlzIGEgcGF0Y2ghIFRoYXQncyBhIGdvb2Qgc2lnbi4gSSBrbm93IHN5emthbGxlciBoYXMgVVNCIGFuZCBQQ0kgZnV6emVycy4gSSBzaG91bGQgY2hlY2sgaWYgYGJyY21mbWFjYCBpcyBhY3R1YWxseSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgUENJIGZ1enplciBpbiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgaXQgKmRvZXMqIGZ1enogUENJIGRldmljZXMgdXNpbmcgYSB2aXJ0dWFsIFBDSSBicmlkZ2Ugb3IgYSBzaW1pbGFyIG1lY2hhbmlzbS4gVGhlbiBJJ20gcmVtaW5kZWQgb2YgdGhlIHByb21wdCdzIGNvbmRpdGlvbjogcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHdoaWNoIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbklzIGBicmNtZm1hY2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gTm8sIGl0J3MgYSBXaS1GaSBkcml2ZXIsIHNvIGl0J3Mgbm90IGFueSBvZiB0aG9zZS4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudC4gT2theSwgSSBuZWVkIHRvIHZlcmlmeSBpZiBgYnJjbWZtYWNgIGlzIHJlYWNoYWJsZSwgdGhlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyOCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjowOC42MjU5NzM2NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTE0NjQ2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcGNpZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNDM5OmJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjU2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNjkwOlxcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjkxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3NjI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJyY21mX3BjaWVkcnZyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY0LVxcdC5pZF90YWJsZSA9IGJyY21mX3BjaWVfZGV2aWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzY1OlxcdC5wcm9iZSA9IGJyY21mX3BjaWVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY2LVxcdC5yZW1vdmUgPSBicmNtZl9wY2llX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MDkuNzc3NDQzMjc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDk0MjY1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJ3MgUENJIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGJyY21mbWFjYCB0b2RheS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBvbiBteSBtaW5kOiBpcyB0aGlzIGRyaXZlciAqZXhjbHVzaXZlbHkqIHRpZWQgdG8gUENJLCBvciBkb2VzIGl0IHN1cHBvcnQgb3RoZXIgaW50ZXJmYWNlcywgdG9vPyBLbm93aW5nIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcG9ydGFiaWxpdHksIGl0cyBwb3RlbnRpYWwgYXBwbGljYXRpb24gaW4gZGlmZmVyZW50IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBhbmQsIHF1aXRlIGZyYW5rbHksIHdoZXJlIEkgY2FuIG1ha2UgdGhlIG1vc3QgaW1wYWN0IHdpdGggYW55IG1vZGlmaWNhdGlvbnMgSSBtaWdodCBjb25zaWRlci4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgUENJIGRlcGVuZGVuY2UgcmlnaHQgbm93LCBhcyB0aGF0IGltcGFjdHMgYW55IG9mIG15IG90aGVyIGludmVzdGlnYXRpb25zLiBJIG5lZWQgdG8ga25vdyBob3cgZGVlcCB0aGlzIHJhYmJpdCBob2xlIGdvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoxMi43MjY4NzI0NzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTIyNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MTIuNzkwNDAwNzFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMzIzMTM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZtYWMncyBUcmFuc3BvcnQgUHJvdG9jb2wgT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgbXkgbWVudGFsIG1hcCBvZiB0aGUgYGJyY21mbWFjYCBkcml2ZXIncyBhcmNoaXRlY3R1cmUgdGVsbHMgbWUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBTRElPLCBVU0IsIGFuZCBQQ0lFLiBOYXR1cmFsbHksIHdoZW4gYnVpbGRpbmcgYSBkcml2ZXIgd2l0aCB0aGVzZSBkaXZlcnNlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZXMsIHRoZSBwcm90b2NvbCBkZXRhaWxzIGdldCBhIGJpdCBtb3JlIGNvbXBsZXguIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgbXNnYnVmLmNgIGNvbXBvbmVudC4gSSBrbm93IHRoYXQgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHdoZW4gYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgaXMgZGVmaW5lZC4gVGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHBvaW50cyB0byBgQlJDTUZNQUNfUENJRWAgYXMgdGhlIHRyaWdnZXIgZm9yIHRoYXQgY29tcGlsYXRpb24gcGF0aC4gTXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIFVTQiB0cmFuc3BvcnQgYWxzbyB1c2VzIHRoZSBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBwcm90b2NvbC4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBkZXBlbmRlbmN5IG9yIGEgYnVpbGQgZmxhZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgbWVzc2FnZSBidWZmZXIgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBpbiBhIGNvbnNpc3RlbnQgZmFzaGlvbiBhY3Jvc3MgYWxsIHRoZSB0cmFuc3BvcnQgbWVkaXVtcy4gSSBuZWVkIHRvIGJlIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgdG8gZXZhbHVhdGUgdGhlIGRyaXZlciBhcmNoaXRlY3R1cmUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTEzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MTYuNjEzNjM0NDY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY5NjA1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJSQ01GTUFDX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9MTc9Y29uZmlnIEJSQ01GTUFDX1NESU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTIwLVxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyMTpcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTIyLVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTI5PWNvbmZpZyBCUkNNRk1BQ19VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMyLVxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzozMzpcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM0LVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTQwPWNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0OlxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00NS1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjE2Ljc5MDYwMTAyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTYzMjg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlJDTUZNQUMgQnVnIEZvdW5kIGJ5IFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYnVnIHJlcG9ydCwgYW5kIGl0IHNlZW1zIHRoaXMgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgY29kZSBwYXRoIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgYEJSQ01GTUFDX1BDSUVgIG9wdGlvbiBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucyB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBQQ0llIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkcml2ZXIuIE5vdywgdGhlIG9idmlvdXMgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcyBlZmZlY3RpdmVseT8gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIGJ1dCBpcyBpdCBzb3BoaXN0aWNhdGVkIGVub3VnaCB0byBoYW5kbGUgdGhpcyBzcGVjaWZpYyBgYnJjbWZtYWNgIFBDSWUgZHJpdmVyLCBvciBpcyBpdCBqdXN0IGxpbWl0ZWQgdG8gZ2VuZXJpYyBQQ0kgZGV2aWNlIGZ1enppbmc/XG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIHJlcG9ydCAqaXMqIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gU28sIGl0ICpkaWQqIGZpbmQgc29tZXRoaW5nISBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgU3l6a2FsbGVyIGhhcyBhIHZmaW8tYmFzZWQgUENJIGZ1enplciwgd2hpY2ggY2FuIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0IG9wZW5zIHVwIGEgbXVjaCB3aWRlciBhdHRhY2sgc3VyZmFjZSBhbmQgbWVhbnMgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHdpdGhpbiBTeXprYWxsZXIncyBzZXR1cC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIGluIHRoZSBjb21taXQuIEl0IGxvb2tzIGxpa2UgaXQgaW52b2x2ZXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBOb3csIGxldCdzIHRoaW5rIGFib3V0IHRoZWlyIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmcmVxdWVuY3kgb2YgZXhlY3V0aW9uLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLi4uIHRoYXQgc291bmRzIGxpa2UgYSBob3QtcGF0aCBmdW5jdGlvbiwgcHJvY2Vzc2luZyBUWCBzdGF0dXMgdXBkYXRlcy4gVGhlIG90aGVyIHR3bywgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAsIHRob3NlIGFyZSBjb250cm9sLXBhdGggZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZmxvdyByaW5nIG1hbmFnZW1lbnQuIEhtbSwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1MSwiT3V0cHV0VG9rZW5zIjo1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyMi42ODY5MzI0M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MTE3OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI2MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjYxOmJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMzgtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX0ZMT1dfUklOR19DUkVBVEVfQ01QTFRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM5OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2UobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQwLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyMi45MjQwNTYxODhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODQ5MTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCwgYXNzdW1pbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0J3MgdGhlIGhlYXJ0IG9mIGhvdyBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUgYW5kIHJvdXRpbmcgdGhlbSBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtZXNzYWdlIHR5cGVzIGl0J3MgZGVhbGluZyB3aXRoIGFuZCBob3cgdGhhdCBkaXNwYXRjaGluZyBsb2dpYyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBhIHNpbXBsZSBzd2l0Y2ggc3RhdGVtZW50LCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IGFuZCBkYXRhLWRyaXZlbj9cIiBBIHNpbXBsZSBzd2l0Y2ggaXMgZWFzaWVyIHRvIGZvbGxvdyBidXQgbGVzcyBmbGV4aWJsZS4gQSBtb3JlIHNvcGhpc3RpY2F0ZWQgbWV0aG9kLCBwZXJoYXBzIHVzaW5nIGEgZnVuY3Rpb24gcG9pbnRlciB0YWJsZSBvciBhIG1lc3NhZ2Utc3BlY2lmaWMgaGFuZGxlciByZWdpc3RyeSwgd291bGQgbGlrZWx5IGJlIG1vcmUgZXh0ZW5zaWJsZS4gSSBhbHNvIHdhbnQgdG8gc2VlIHRoZSBlcnJvciBoYW5kbGluZy4gRG9lcyBpdCBncmFjZWZ1bGx5IGhhbmRsZSB1bmtub3duIG9yIGNvcnJ1cHRlZCBtZXNzYWdlIHR5cGVzPyBEb2VzIGl0IGxvZyBlcnJvcnMgaW4gYSB3YXkgdGhhdCdzIGFjdHVhbGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nPyBJJ20gaG9waW5nIHRvIHNlZSBhIGdvb2QgYmFsYW5jZSBvZiBlZmZpY2llbmN5IGFuZCByb2J1c3RuZXNzIGhlcmUuIExldCdzIHNlZSBob3cgdGhleSBkZXNpZ25lZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyNi4yNTI1NTE0ODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzgwODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI5Mz1icmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIyOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzNzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODQtXFx0d2hpbGUgKGNvdW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzODU6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODYtXFx0XFx0XFx0XFx0XFx0ICAgICBidWYgKyBtc2didWYtXFx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyNi4zMTYzMzczM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3Njg0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBvZiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCdzIGNsZWFyIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGluY29taW5nIG1lc3NhZ2VzLiBUaGUga2V5IHRoaW5nIHRvIHVuZGVyc3RhbmQgaW1tZWRpYXRlbHkgaXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQ6IGBicmNtZl9tc2didWZfcnhidWZgLiBUaGF0IG1lYW5zIGByeGJ1ZmAgaXMgdGhlIGluY29taW5nIGRhdGEgYnVmZmVyIGFuZCBpdCdzIGFjdGluZyBhcyB0aGUgaW5wdXQgdHJpZ2dlciBmb3IgdGhpcyBzcGVjaWZpYyBwcm9jZXNzaW5nIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGtleSBhcmNoaXRlY3R1cmFsIGNoYXJhY3RlcmlzdGljIHRvIHN0YXJ0IGFuYWx5emluZy4gVGhpcyBpbmRpY2F0ZXMgYSBkYXRhLWRyaXZlbiBtb2RlbCB3aGVyZSB0aGUgcmVjZWlwdCBvZiBhIG5ldyBtZXNzYWdlIGZyb20gdGhlIHJlY2VpdmUgYnVmZmVyIGtpY2tzIG9mZiB0aGUgcHJpbWFyeSBoYW5kbGluZy4gSSdkIG5lZWQgdG8gdHJhY2UgYGJyY21mX21zZ2J1Zl9yeGJ1ZmAgdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGNvbWluZyBmcm9tIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBkYXRhIGZsb3cgaGVyZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIHN0cnVjdHVyZSB0aGF0IGByeGJ1ZmAgaXMgYW5kIHdoZXJlIGFuZCBob3cgaXRzIGZpbGxlZC4gSXQgbGlrZWx5IHNpdHMgYXMgYSBsb3dlciBsYXllciBmdW5jdGlvbiBpbiB0aGUgUlggZGF0YSBwYXRoLiBUaGUgbmV4dCBxdWVzdGlvbiBJIGhhdmUgaXMsIGRvZXMgaXQgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIGFuZCB3aGF0IGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gYW5kIGhvdyBkb2VzIGl0IGFmZmVjdCBvdGhlciBmdW5jdGlvbnM/LiBUaGF0J3MgaG93IEknbGwgYmVnaW4gdG8gZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjM0LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MzAuMTQ0MDI1OTM5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ2MDc5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfbXNnYnVmX3J4YnVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTI4NT1zdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyOTI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04Nzk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODkzLVxcdFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTQ6XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg5NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9ODk5PWJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTMxOnN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMDA5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMTA6YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTctXFx0d2hpbGUgKGZpbGxidWZzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMTg6XFx0XFx0cmV0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KG1zZ2J1ZiwgZmlsbGJ1ZnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDE5LVxcdFxcdGlmICghcmV0Y291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTAyOD1icmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDMyLVxcdFxcdFxcdFxcdCAgQlJDTUZfTVNHQlVGX1JYQlVGUE9TVF9USFJFU0hPTEQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDMzOlxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTAzNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTAzNz1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMzg6YnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDM5LVxcdFxcdFxcdCAgICAgdTMyIGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMTE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTExNS1cXHRjb3VudCA9IG1zZ2J1Zi1cXHUwMDNlbWF4X2lvY3RscmVzcGJ1ZiAtIG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTExNjpcXHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCBmYWxzZSwgY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTE3LVxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZiArPSBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTIxOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyNS1cXHRjb3VudCA9IG1zZ2J1Zi1cXHUwMDNlbWF4X2V2ZW50YnVmIC0gbXNnYnVmLVxcdTAwM2VjdXJfZXZlbnRidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMjY6XFx0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KG1zZ2J1ZiwgdHJ1ZSwgY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTI3LVxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExMzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE0NS1cXHRcXHRtc2didWYtXFx1MDAzZWN1cl9ldmVudGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTQ2OlxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTU2MT1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NTUtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjU2OlxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY1Ny1cXHRcXHRpZiAobXNnYnVmLVxcdTAwM2VtYXhfcnhidWZwb3N0ICE9IG1zZ2J1Zi1cXHUwMDNlcnhidWZwb3N0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NjItXFx0fSB3aGlsZSAoY291bnQgXFx1MDAzYyAxMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NjM6XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3QobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2NDpcXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MzAuMzE4NjQwODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0NzQyNzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBhcyBhbiBleHBlcmllbmNlZCBlbmdpbmVlcjpcblxuKipBbmFseXppbmcgTWVzc2FnZSBCdWZmZXIgUHJvY2Vzc2luZyBpbiB0aGUgYnJjbWYgRHJpdmVyKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHNvbWUgbW9kaWZpY2F0aW9ucywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBzZWVtIGZvY3VzZWQgb24gdGhlc2UgZnVuY3Rpb25zOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIFRoZXNlIGFyZSBhbGwgcHJvY2Vzc2luZyBtZXNzYWdlcyBvciBoYW5kbGluZyByZXNwb25zZXMgcmVsYXRlZCB0byB0cmFuc21pdCBzdGF0dXMgb3IgZmxvdyByaW5nIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICpjb250ZXh0KiBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5JIHNlZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGNhbGxlZCBmcm9tIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGlzIGxpa2VseSBhIGRpc3BhdGNoZXIgdGhhdCByb3V0ZXMgbWVzc2FnZXMgYmFzZWQgb24gdGhlaXIgdHlwZS4gVGhlbiBJIHNlZSB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4gQWgtaGEsIHRoYXQncyB3aGVyZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBmcm9tIHRoZSBQQ0lFIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIG9yIGEgdGFza2xldC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggaW50ZXJydXB0IHByb2Nlc3NpbmcsIG9yIGRlZmVycmVkIGludGVycnVwdCBwcm9jZXNzaW5nLCB3aGljaCBpcyB2ZXJ5IGNvbW1vbiBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQuIFRoaXMgYWxzbyBnaXZlcyBhIGhpbnQgYXMgdG8gdGhlIHRpbWluZyBhbmQgY29uY3VycmVuY3kgY29uc3RyYWludHMgdGhhdCBhcmUgaW4gcGxheS5cblxuTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBvdGhlciBjYWxsZXJzIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgbmV3IGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCwgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIGlzc3Vlcy4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMSwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjozNC44NjYwNzA3NjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTk5ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExNzQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjEtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1JYX0NNUExUXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM3MTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDEzLVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfUlhfQ09NUExFVEVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE0OlxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxNS1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNjpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19DT05UUk9MX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM0LjkyNjI3NjY1OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMwODQ1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIGNsZWFybHkgdGhlIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgZW50cnkgcG9pbnQsIGlmIHlvdSB3aWxsLiBUaGUgZmxvdyBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLCBhbmQgdGhpcyBpcyBpdCBmb3IgdGhlIG1lc3NhZ2UgYnVmZmVyIHJlY2VpdmUuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSB1cHN0cmVhbSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gdGhpcyBmdW5jdGlvbiBnZXR0aW5nIGludm9rZWQuIEknbSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCBhIHJlYWwgZ3Jhc3Agb2YgaG93IGRhdGEgZmxvd3MgaW50byB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMgdGVsbCB1cy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQxMCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM4LjI1NzEyNTUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExMjgzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQwMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTMyLXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXFx0XFx0XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo5NTY6XFx0XFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmRldmluZm8tXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM4LjMxODI2MDMwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTcwNjA1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgdGFyZ2V0IGhlcmUsIHN0YXJ0aW5nIHdpdGggYGJyY21mX3BjaWVfaXNyX3RocmVhZGAuIFRoYXQncyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBQQ0lFIGRldmljZSwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIHByb2JlZCBhbmQgaW50ZXJydXB0cyBhcmUgb2NjdXJyaW5nIOKAkyBhIGdvb2Qgc2lnbiEgQW5kIHllcywgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGEgbmV0d29yayBkcml2ZXIuIFNvLCBpcyBmdXp6aW5nIHdhcnJhbnRlZD8gQWJzb2x1dGVseS5cblxuSW5pdGlhbGx5LCBJIHplcm9lZCBpbiBvbiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgc3RyZXNzZXMgdGhlIGltcG9ydGFuY2Ugb2Ygbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIOKAkyBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGNhbiBiZSBpbmxpbmVkIGFuZCBkb24ndCBvZmZlciBkaXN0aW5jdCBzeW1ib2xzIGZvciB1cyB0byB0YXJnZXQuIFdhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgKmFyZSogc3RhdGljLlxuXG5UaGUgYWN0dWFsIGVudHJ5cG9pbnQgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBJIG5lZWQgdG8gY29uZmlybSBpdCdzIG5vbi1zdGF0aWMsIGFuZCB0aGFua2Z1bGx5LCBpdCBpcy4gTG9va3MgbGlrZSB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW50ZXJlc3QuXG5cbk5vdywgY2hlY2tpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIGBCUkNNRk1BQ2AsIGBCUkNNRk1BQ19QQ0lFYCwgYW5kIGBCUkNNRk1BQ19QUk9UT19NU0dCVUZgICh3aGljaCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGJ5IGBCUkNNRk1BQ19QQ0lFYCkuIExldCdzIGp1c3QgbWFrZSBzdXJlIHRob3NlIGRlcGVuZGVuY2llcyBmb3IgYEJSQ01GTUFDX1BDSUVgIGFyZSBhbGwgc2F0aXNmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI0MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo0NC40ODg4Njg4MDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODI2NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19QQ0lFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9Mjk9Y29uZmlnIEJSQ01GTUFDX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjQ0LjU0ODcwMDYzNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0NDQxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUkNNRk1BQyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBicmNtZm1hY2AgbW9kdWxlLCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2AgZmlsZS4gSSdsbCBmb2N1cyBvbiBhcm91bmQgbGluZSA0MCB0byBzZWUgd2hhdCB0aGUgaW5pdGlhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQgdGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IHRvIHNlZSBob3cgdGhlIG1vZHVsZSBpcyBzdHJ1Y3R1cmVkIGFuZCBob3cgaXQncyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCdzIHRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE3NiwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjQ3Ljc3MzE0NjM3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAzNzpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAzODpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG4gIDQxOlxcdFxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NDpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuICA0NTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0NjpcXHRcXHRoZWxwXFxuICA0NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgNDg6XFx0XFx0ICBJRUVFODAyLjExYWMgZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cXG4gIDQ5OlxcdFxcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFBDSUUgd2lyZWxlc3MgY2FyZC5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo0Ny43NzMyMTI3MTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NjAwNTY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBCUkNNRk1BQyBhbmQgQlJDTUZNQUNfUENJRSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19QQ0lFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbXBhcmUgYW5kIGNvbnRyYXN0IHRoZW0uIEhhbmcgb24sIHRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHBvdGVudGlhbCBkZXBlbmRlbmN5LiBJcyBgQlJDTUZNQUNgIGEgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYEJSQ01GTUFDX1BDSUVgIGJ1aWxkcyB1cG9uLCBvciBpcyB0aGVyZSBhbm90aGVyIHJlbGF0aW9uc2hpcCBpbiBwbGF5PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYEJSQ01GTUFDYCBoYXMgcHJlcmVxdWlzaXRlcyBvciBpZiBpdCByZWxpZXMgb24gb3RoZXIgbW9kdWxlcyB0byBmdW5jdGlvbi4gVGhpcyBjb3VsZCBpbXBhY3QgaG93IEkgYXBwcm9hY2ggaW50ZWdyYXRpb24gYW5kIGhvdyBhbnkgbW9kaWZpY2F0aW9ucyBjYXNjYWRlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Njg4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1MC44NjkyMjA1OTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgQlJDTUZNQUNcXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJSQ01VVElMXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cXG4gICA3OlxcdFxcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xcbiAgIDg6XFx0XFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkXFxuICAgOTpcXHRcXHQgIGJyY21mbWFjLmtvLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMTI6XFx0XFx0Ym9vbFxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBCUkNNRk1BQ19TRElPXFxuICAxODpcXHRcXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIChNTUMgPSB5IHx8IE1NQyA9IEJSQ01GTUFDKVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1MC44NjkyODM5MzJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMzI2ODU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlJDTUZNQUMgTW9kdWxlIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQlJDTUZNQUNgIG1vZHVsZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBUaGF0J3Mgbm90IHN1cnByaXNpbmc7IGl0J3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIFNvLCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBDRkc4MDIxMWAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LCBhbmQgdGhlbiBhbHNvIGBCUkNNRk1BQ2AgaXRzZWxmLCBhbG9uZyB3aXRoIGBCUkNNRk1BQ19QQ0lFYCBzaW5jZSBpdCBtaWdodCBiZSBQQ0ktc3BlY2lmaWMuXG5cbkhvbGQgb24gYSBzZWMuLi4gYEJSQ01GTUFDX1BDSUVgIGRlcGVuZHMgb24gYFBDSWAuIE9rYXksICp0aGF0KiBkZXBlbmRlbmN5IGlzIGFsbW9zdCBhbHdheXMgc2F0aXNmaWVkOyBQQ0kncyB1c3VhbGx5IGJha2VkIGluIHRvIHRoZSBzeXN0ZW0uIFN0aWxsLCB3b3J0aCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBzdXJlIG5vdGhpbmcncyBiZWVuIGluYWR2ZXJ0ZW50bHkgZGlzYWJsZWQuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJlYWxseSBsb29rIGludG8gaG93IHRoZXNlIG1lc3NhZ2UgYnVmZmVycyBhcmUgaGFuZGxlZC4gTGV0IG1lIHRha2UgYSBsb29rIGF0IGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgd2l0aGluIHRoZSBgYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jYCBkcml2ZXIgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbW9kdWxlIGFjdHVhbGx5IGhhbmRsZXMgaW5jb21pbmcgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyMTQsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1NC44ODI1NTQ4MTFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDAwOlxcdH1cXG4xNDAxOlxcdFxcbjE0MDI6XFx0XFxuMTQwMzpcXHRpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbjE0MDQ6XFx0e1xcbjE0MDU6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuMTQwNjpcXHRcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVxcdTAwM2VkcnZyO1xcbjE0MDc6XFx0XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuMTQwODpcXHRcXHRzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZztcXG4xNDA5OlxcdFxcdHZvaWQgKmJ1ZjtcXG4xNDEwOlxcdFxcdHUzMiBmbG93aWQ7XFxuMTQxMTpcXHRcXHRpbnQgcWxlbjtcXG4xNDEyOlxcdFxcbjE0MTM6XFx0XFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XFxuMTQxNDpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuMTQxNTpcXHRcXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcXG4xNDE2OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcXG4xNDE3OlxcdFxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuMTQxODpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuMTQxOTpcXHRcXG4xNDIwOlxcdFxcdGZvcl9lYWNoX3NldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwLFxcbjE0MjE6XFx0XFx0XFx0XFx0IG1zZ2J1Zi1cXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xcbjE0MjI6XFx0XFx0XFx0Y2xlYXJfYml0KGZsb3dpZCwgbXNnYnVmLVxcdTAwM2V0eHN0YXR1c19kb25lX21hcCk7XFxuMTQyMzpcXHRcXHRcXHRjb21tb25yaW5nID0gbXNnYnVmLVxcdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcXG4xNDI0OlxcdFxcdFxcdHFsZW4gPSBicmNtZl9mbG93cmluZ19xbGVuKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6NTQuODgyODI2NzQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzU5NzkzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNU0dCVUYgUmluZyBQcm9jZXNzaW5nKipcblxuT2theSwgc28gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyB0aGUgY29yZSBlbnRyeSBwb2ludCwgdGhlIHByaW1hcnkgZnVuY3Rpb24gaW5pdGlhdGluZyB0aGUgcHJvY2Vzc2luZyBvZiBNU0dCVUYgcmluZ3MuIE5vIHF1ZXN0aW9uIHRoZXJlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRob3VnaDsgYXJlIHRoZXJlIGFueSAqb3RoZXIqIHBvc3NpYmxlIGVudHJ5IHBvaW50cyBJJ20gb3Zlcmxvb2tpbmc/XG5cbkxldCdzIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AgYmFjay4gSXQncyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBbmQgZmluYWxseSwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvcmlnaW5hdGVzIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC5cblxuQWgsIHRoZXJlJ3MgdGhlIGNvbmZpcm1hdGlvbi4gVGhlIGNhbGwgc3RhY2sgbWFrZXMgaXQgY2xlYXIuIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgYWN0cyBhcyB0aGUgcm9vdCwgaXQncyB0aGUgcGVyZmVjdCBmdW5jdGlvbiB0byB0YXJnZXQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHdheSB0byByZWFjaCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLiBKdXN0IHdhbnQgdG8gcnVsZSBvdXQgYW55IHN1YnRsZSBhbHRlcm5hdGl2ZSBwYXRocyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNDIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1OS4xMTg4MDk2MThaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjQ0NzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg5OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTctXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1RYX1NUQVRVU1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1OS4xNzgwNTk5MzVaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MTE5NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZm9jdXNpbmcgb24gdGhlIGNvcmUgY29uY2VwdDpcblxuKipOYXJyb3dpbmcgdGhlIEZvY3VzOiBUaGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIEZ1bmN0aW9uKipcblxuTXkgbWluZCBpcyBsYXNlci1mb2N1c2VkIHJpZ2h0IG5vdy4gSSdtIGRyaWxsaW5nIGRvd24gdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLiBUaGF0J3Mgd2hlcmUgdGhlIGNyaXRpY2FsIHByb2Nlc3NpbmcgaXMgaGFwcGVuaW5nLCBhbmQgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLiBObyBkaXN0cmFjdGlvbnMsIG5vIGV4dHJhbmVvdXMgY29udGV4dCwganVzdCB0aGlzIGZ1bmN0aW9uLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIHRoZSBwaXZvdGFsIHBvaW50IGluIHRoaXMgd2hvbGUgc3lzdGVtLCB0aGUgbGlrZWx5IGZ1bGNydW0gb2YgdGhlIGVudGlyZSBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MsIGFuZCB3aGF0IGhhcyBkcmF3biBteSBpbW1lZGlhdGUgYXR0ZW50aW9uLiBBbGwgb3RoZXIgY29uc2lkZXJhdGlvbnMgY2FuIHdhaXQ7IHRoZSBpbXBsaWNhdGlvbnMgb2YgaG93IHRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIG1lc3NhZ2UgdHlwZXMsIGFyZSBwYXJhbW91bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTUwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MDIuNDE5MjU4NzM1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQzNzY3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyOTM9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTMyMjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzcxPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg0LVxcdHdoaWxlIChjb3VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzg1OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUobXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg2LVxcdFxcdFxcdFxcdFxcdCAgICAgYnVmICsgbXNnYnVmLVxcdTAwM2VyeF9kYXRhb2Zmc2V0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MDIuNDc4NzAxNDEyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDk4Mzg4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIHNvbGVseSBvbiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgOlxuXG4qKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAqKlxuXG5Pa2F5LCBzbyB0aGUgdGhvdWdodCB0cmFpbiBoYXMgbmFycm93ZWQgZG93biB0byBqdXN0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIEl0IHRlbGxzIG1lIHRoYXQgdGhlIGZvY3VzIGlzICpleGNsdXNpdmVseSogb24gaGFuZGxpbmcgcmVjZWl2ZWQgbWVzc2FnZXMgd2l0aGluIHRoZSBCcm9hZGNvbSBXaS1GaSBkcml2ZXIsIGxpa2VseSBvbiB0aGUgcmVjZWl2ZXIgc2lkZSBvZiB0aGUgY29tbXVuaWNhdGlvbi4gTm90aGluZyBlbHNlIGlzIHVuZGVyIGNvbnNpZGVyYXRpb24gcmlnaHQgbm93IOKAkyBubyB0cmFuc21pdCBwYXRocywgaW5pdGlhbGl6YXRpb24sIG9yIGVycm9yIGhhbmRsaW5nIGJleW9uZCB3aGF0J3MgaW50cmluc2ljIHRvIHRoZSByZWNlaXZlIHByb2Nlc3MuXG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZldyBrZXkgcXVlc3Rpb25zLiBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgYmVpbmcgYW5hbHl6ZWQgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhIHNwZWNpZmljIGJ1Zywgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgb3Igc2ltcGx5IGEgZ2VuZXJhbCBjb2RlIHJldmlldyByZWxhdGVkIHRvIHJlY2VpdmUgbWVzc2FnZSBwcm9jZXNzaW5nPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGZsb3dzIHRvIGFuZCBmcm9tIHRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwuIFdoYXQga2luZCBvZiBidWZmZXJpbmcgaXMgaW52b2x2ZWQsIGFuZCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIHRoaW5rIGFib3V0PyBBcmUgd2UgZGVhbGluZyB3aXRoIERNQSBvciBDUFUtZHJpdmVuIG1lc3NhZ2UgcHJvY2Vzc2luZyBoZXJlP1xuXG5TaW5jZSBpdCdzIGZvY3VzZWQgb24gYHJ4YCwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRhdGEgdmFsaWRhdGlvbiwgbWVzc2FnZSBwYXJzaW5nLCBhbmQgaG93IHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBtZXNzYWdlIGl0J3MgcmVjZWl2ZWQuIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1lc3NhZ2UgdHlwZSBvciB0eXBlcyB0aGF0IGFyZSBjYXVzaW5nIGNvbmNlcm4/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIG92ZXJmbG93IGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBjb21wcm9taXNlIHNlY3VyaXR5PyBUaGUgaW50cmljYWNpZXMgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIG1hbmFnZW1lbnQgYmVjb21lIHBhcmFtb3VudCDigJMgbWVtb3J5IGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGRhdGEgaXQgY29udGFpbnMuIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaGFzIHRvIGJlIHdlbGwtdmV0dGVkLiBJdHMgdnVsbmVyYWJpbGl0eSBjYW4gY29tcHJvbWlzZSB0aGUgZW50aXJlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2OSwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUzOjA2LjEyODU0NDEyWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ1NTU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9SWF9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNDAzPWludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE3LVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTg6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzowNi4xODgwMDUwODZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk3Nzg1NTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHRoZSBzb2xlIGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0J3MgY29uZmlybSBpZiBpdCdzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEV4YW1pbmluZyB0aGUgY29kZSwgaXQncyBpbmRlZWQgdGhlIGRlc2lnbmF0ZWQgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIFJYIG1lc3NhZ2VzIG9yaWdpbmF0aW5nIGZyb20gdGhlIGRldmljZS4gQ3J1Y2lhbGx5LCBpdCdzIGludm9rZWQgZGlyZWN0bHkgZnJvbSB0aGUgaW50ZXJydXB0IGhhbmRsZXIsIGFuZCBpdCdzIGFsc28gbm9uLXN0YXRpYy4gVGhvc2UgZmFjdG9ycyBwb2ludCB0byBpdHMgc2lnbmlmaWNhbmNlLiBZZXMsIGl0J3MgYSBzdHJvbmcgZm9jdXMgcG9pbnQuXG5cbk5vdywgbGV0J3MgZXN0YWJsaXNoIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgIGFzIHBvdGVudGlhbCBmbGFncy4gQWgsIGEgZGVwZW5kZW5jeSBpcyBhcHBhcmVudDogYEJSQ01GTUFDYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFdlIGtub3cgYENGRzgwMjExYCBpcyB0cmlzdGF0ZSwgYnV0IGxpa2VseSB3aWxsIGJlIHNldC4gRnVydGhlcm1vcmUsIGBCUkNNRk1BQ19QQ0lFYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEJSQ01GTUFDYCBhbmQgYFBDSWAuIFNpbmNlIGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBtb3N0IHN5c3RlbXMsIHdlIGNhbiBzYWZlbHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuXG5cbkp1c3QgdG8gZW5zdXJlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYENGRzgwMjExYCBpdHNlbGYgaGFzIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4ODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTEuMTY1ODczMTk1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODkwNTA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTEuMjI0Nzg0MTYxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTYyMTEzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENGRzgwMjExYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHJlbGllcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0IHNlZW1zIGEgYml0Li4ucmVkdW5kYW50LCBkb2Vzbid0IGl0PyBJdCdzIGJhc2ljYWxseSBhbHdheXMgZW5hYmxlZC4gVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGdvaW5nIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnN1bHQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGFjdHVhbCBsb2dpYzsgSSdsbCBzdGFydCBsb29raW5nIGFyb3VuZCBsaW5lIDE3LCBhbmQgc2VlIHdoYXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aG9zZSBjb21wb25lbnRzIGFyZS4gSSBoYXZlIGEgaHVuY2ggdGhlcmUncyBtb3JlIHRvIHRoaXMgdGhhbiBtZWV0cyB0aGUgZXllLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IHBvdGVudGlhbCBjb25kaXRpb25hbCBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTQuNTgwOTk4NDk2WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIENGRzgwMjExXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUzOjE0LjU4MTA2ODA1NloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njg3ODk5NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRlcGVuZGVuY3kgdHJlZTogYENGRzgwMjExYCBoaW5nZXMgb24gYFJGS0lMTCB8fCAhUkZLSUxMYC4gU2luY2UgYFJGS0lMTGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQsIHRoYXQgZ2l2ZXMgdXMgYSBzdGFydGluZyBwb2ludC4gQW5kIG9mIGNvdXJzZSwgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXJlIHRvIGZvY3VzIHRoZSBmdXp6aW5nLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBtaWdodCBiZSBhIGdvb2QgdGFyZ2V0LiBJdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYXRlcyB0aGUgcHJvY2Vzc2luZyBvZiBpbmNvbWluZyBSWCBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UsIGFuZCBjcnVjaWFsbHksIGl0IGdldHMgY2FsbGVkIGZyb20gdGhlIGludGVycnVwdCBoYW5kbGVyLiBJbXBvcnRhbnRseSwgaXQncyBub3Qgc3RhdGljLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gTGV0J3Mgc2VlLi4uIHllcCwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgZ29vZCBmaXJzdCBjYW5kaWRhdGUuXG5cbkFscmlnaHQsIGxldCdzIGV4cGxvcmUgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBzZWVtcyB0byB0b3VjaCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIFRoZXNlIGFsbCBmZWVkIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEFuZCBmaW5hbGx5LCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBieSBvdXIgaW5pdGlhbCB0cmlnZ2VyLCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBTbywgdGhlIGNhbGwgc3RhY2sgc29saWRpZmllcyB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBiZXN0IGluaXRpYWwgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuLi4gSSBzZWUgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYC4gTm93IEknbSB3b25kZXJpbmcgaWYgKnRoYXQqIGlzIGEgYmV0dGVyIHRhcmdldD8gT2gsIGJ1dCBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYCBpcyBzdGF0aWMuLi4gc28gbm8sIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgaXMgc3RpbGwgdGhlIHN1cGVyaW9yIGNob2ljZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgZW50cnkgcG9pbnRzIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4uLiBzZWVtcyB3ZSdyZSBnb29kIHRoZXJlLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIG9ubHkgZ2V0cyBjYWxsZWQgZnJvbSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBFeGNlbGxlbnQuIFRoYXQgY29uZmlybXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTc2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MjEuMjY4OTcxNTM0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk5NzQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9SWF9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNDAzPWludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE3LVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTg6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzoyMS4zMzg5Nzg3N1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDk5MTcxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJyb2FkY29tIFdMQU4gRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBubyBvdGhlciBhY3RpdmUgaW52ZXN0aWdhdGlvbnMgYXQgdGhlIG1vbWVudC4gTGV0J3MgZGlnIGludG8gdGhpcyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHN5bWJvbC4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBpdCdzIHRpZWQgdG8gYENGRzgwMjExYCwgYEJSQ01GTUFDYCwgYW5kIHNwZWNpZmljYWxseSBgQlJDTUZNQUNfUENJRWAsIHNvIHRoaXMgaXMgYSBQQ0llLXJlbGF0ZWQgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgaXNzdWUuXG5cblRoZSBzdW1tYXJ5IGRlc2NyaWJlcyBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBFc3NlbnRpYWxseSwgdGhleSdyZSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggaW50byBgbXNnYnVmLVx1MDAzZWZsb3dyaW5nc2AuIE1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIGNsYXNzaWMgYXJyYXkgYWNjZXNzIHZ1bG5lcmFiaWxpdHkuIFRoZSB2dWxuZXJhYmxlIGZ1bmN0aW9ucywgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLCBhcmUgYWxsIHRyaWdnZXJlZCB3aGVuIHByb2Nlc3NpbmcgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSB0aGUgTVNHQlVGIHByb3RvY29sIOKAkyB3aGljaCBpcyBhIFBDSUUtc3BlY2lmaWMgdGhpbmcuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgYSBrZXkgcG9pbnQsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBsaWtlIHN5emthbGxlci4gVGhlIGNvZGUgY2hhbmdlIGFmZmVjdHMgY29yZSBkcml2ZXIgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4gSXQncyBub24tc3RhdGljLCBkZWNsYXJlZCBpbiBgbXNnYnVmLmhgLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBnb29kIGZvY2FsIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEl0IHNlZW1zIHdlIGhhdmUgYSByZWFzb25hYmx5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODQ2LCJPdXRwdXRUb2tlbnMiOjIzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzoyNy40MzgxNTMwODFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTEzODg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19QQ0lFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19QQ0lFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 03:19:48 +0000 UTC FinishedAt: 2026-07-26 03:53:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "BRCMFMAC", "BRCMFMAC_PCIE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "BRCMFMAC", "BRCMFMAC_PCIE" ], "series_id": "7dc04faa-5424-45f3-9204-daede8835c57" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_proto_msgbuf_rx_trigger" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1BDSUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NgLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIChgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlYCkgYXJlIGNhbGxlZCB3aGVuIHByb2Nlc3NpbmcgbWVzc2FnZXMgZnJvbSB0aGUgZGV2aWNlIHZpYSB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBQQ0lFIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgdmlhIHN5emthbGxlciYjMzk7cyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzVkNmJhMmViZGNlN2M4OTMzZmMxZjhkMmZjY2RhMmFiYzI0MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5pbmRleCBiYTFjZTE1NTJlMGY0My4uODE0NmQ1MGQ2ZjA3MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTU2MCw2ICYjNDM7NTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cdTAwM2VmbG93LCBmbG93aWQpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfbXNnYnVmX2dldF9mbG93aWQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuJiM0MztcdFx0XHRcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcbiYjNDM7e1xuJiM0MztcdHUzMiBpZCA9IGZsb3dfcmluZ19pZDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlkIFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XG4mIzQzO1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCYjMzQ7aW52YWxpZCBmbG93cmluZyBpZCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZsb3dfcmluZ19pZCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGlmIChpZCBcdTAwM2U9IG1zZ2J1Zi1cdTAwM2VtYXhfZmxvd3JpbmdzKSB7XG4mIzQzO1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCYjMzQ7aW52YWxpZCBmbG93cmluZyBpZCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZsb3dfcmluZ19pZCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqZmxvd2lkID0gaWQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC04ODAsMTcgJiM0Mzs5MDIsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqdHhfc3RhdHVzO1xuIFx0dTMyIGlkeDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSkge1xuJiM0MztcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbiYjNDM7XHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtMTIzNywxMyAmIzQzOzEyNjUsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuJiM0MztcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcbiBcbiYjNDM7XHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChzdGF0dXMpIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Rmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjY2LDEzICYjNDM7MTI5NywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwO1xuIFx0dTE2IHN0YXR1cztcbiBcdHUxNiBmbG93aWQ7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuJiM0MztcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcXG5cJiMzNDssIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7QlJDTUZNQUMmIzM0OywKICAgICYjMzQ7QlJDTUZNQUNfUENJRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyIChicmNtZm1hYykgYnkgdmFsaWRhdGluZyB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHVzaW5nIGl0IGFzIGFuIGluZGV4IHRvIGFjY2VzcyBgbXNnYnVmLVx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJiMzOTtzIHZpcnR1YWwgUENJIGZ1enplcikgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzNWQ2YmEyZWJkY2U3Yzg5MzNmYzFmOGQyZmNjZGEyYWJjMjQyNmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAwMzo1MTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwppbmRleCBiYTFjZTE1NTJlMGY0My4uODE0NmQ1MGQ2ZjA3MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTU2MCw2ICYjNDM7NTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogCWJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtJmd0O2Zsb3csIGZsb3dpZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiYjNDM7CQkJCSAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZCkKJiM0Mzt7CiYjNDM7CXUzMiBpZCA9IGZsb3dfcmluZ19pZDsKJiM0MzsKJiM0MzsJaWYgKGlkICZsdDsgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkgewomIzQzOwkJYnBoeV9lcnIobXNnYnVmLSZndDtkcnZyLCAmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcbiYjMzQ7LAomIzQzOwkJCSBmbG93X3JpbmdfaWQpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWlmIChpZCAmZ3Q7PSBtc2didWYtJmd0O21heF9mbG93cmluZ3MpIHsKJiM0MzsJCWJwaHlfZXJyKG1zZ2J1Zi0mZ3Q7ZHJ2ciwgJiMzNDtpbnZhbGlkIGZsb3dyaW5nIGlkICV1XG4mIzM0OywKJiM0MzsJCQkgZmxvd19yaW5nX2lkKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwkqZmxvd2lkID0gaWQ7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIAogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQpAQCAtODgwLDE3ICYjNDM7OTAyLDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCXN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7CiAJdTMyIGlkeDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCXUxNiBmbG93aWQ7CiAKIAl0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7CiAJaWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLSZndDttc2cucmVxdWVzdF9pZCkgLSAxOwotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtJmd0O2RydnItJmd0O2J1c19pZi0mZ3Q7ZGV2LAogCQkJCSAgICAgbXNnYnVmLSZndDt0eF9wa3RpZHMsIGlkeCk7CiAJaWYgKCFza2IpCiAJCXJldHVybjsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpIHsKJiM0MzsJCWJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtJmd0O2RydnIsIHR4X3N0YXR1cy0mZ3Q7bXNnLmlmaWR4KSwKJiM0MzsJCQkJIHNrYiwgZmFsc2UpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi0mZ3Q7dHhzdGF0dXNfZG9uZV9tYXApOwogCWNvbW1vbnJpbmcgPSBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdOwogCWF0b21pY19kZWMoJmFtcDtjb21tb25yaW5nLSZndDtvdXRzdGFuZGluZ190eCk7CkBAIC0xMjM3LDEzICYjNDM7MTI2NSwxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDsKIAl1MTYgc3RhdHVzOwogCXUxNiBmbG93aWQ7CiYjNDM7CXUxNiBmbG93X3JpbmdfaWQ7CiAKIAlmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmOwogCi0JZmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwotCWZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUOwomIzQzOwlmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLSZndDtjb21wbF9oZHIuc3RhdHVzKTsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJaWYgKHN0YXR1cykgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0Zsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxuJiMzNDssIHN0YXR1cyk7CiAJCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwpAQCAtMTI2NiwxMyAmIzQzOzEyOTcsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7CiAJdTE2IHN0YXR1czsKIAl1MTYgZmxvd2lkOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCiAJZmxvd3JpbmdfZGVsZXRlX3Jlc3AgPSAoc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqKWJ1ZjsKIAotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLSZndDtjb21wbF9oZHIuZmxvd19yaW5nX2lkKTsKLQlmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDsKJiM0MzsJZmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwogCXN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLnN0YXR1cyk7CiAKJiM0MzsJaWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgJmFtcDtmbG93aWQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChzdGF0dXMpIHsKIAkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcbiYjMzQ7LCBzdGF0dXMpOwogCQlicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLSZndDtmbG93LCBmbG93aWQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiB0aGUgYGJyY21mbWFjYCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgLCB0byB2YWxpZGF0ZSB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHN1YnRyYWN0aW5nIGBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gZGVhbGluZyB3aXRoIGBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdYCBhbmQgc2ltaWxhciBhcnJheSBhY2Nlc3Nlcy4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCBob3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZT8gSXMgdGhpcyBwYXRjaCBldmVuIHJlbGV2YW50IHRvIG91ciBmdXp6aW5nIGVmZm9ydHM/IGBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlci4gSG1tLCBjYW4gd2UgZnV6eiB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBXZSB1c3VhbGx5IGhhdmUgbHVjayBmdXp6aW5nIHdpcmVsZXNzIGRyaXZlcnMgaWYgdGhleSYjMzk7cmUgZXhwb3NlZCB0aHJvdWdoIFVTQiwgU0RJTywgb3Igc29tZSBraW5kIG9mIHZpcnR1YWwgYnVzLiBUaGUgZ29vZCBuZXdzIGlzIGBicmNtZm1hY2Agc3VwcG9ydHMgU0RJTywgVVNCLCBhbmQgUENJRS4KClNvLCBVU0IgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBob29rIGl0IHVwIHVzaW5nIGR1bW15X2hjZCBvciByYXctZ2FkZ2V0LiBTRElPIG1pZ2h0IGJlIHBvc3NpYmxlIHRvbywgKmlmKiB3ZSBjYW4gZmluZCBvciBidWlsZCBhbiBlZmZlY3RpdmUgU0RJTyBmdXp6ZXIuIEJ1dCBVU0IgaXMgdGhlIG1vcmUgcHJvbWlzaW5nIHJvdXRlLiBOb3csIEkgbmVlZCB0byBjb25maXJtIGlmIGBtc2didWYuY2AgaXMgYWN0dWFsbHkgdXNlZCBmb3IgVVNCLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AsIG9yIHJlbGF0ZWQgVVNCLXNwZWNpZmljIGNvZGUuIFdhaXQsIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSwgSSBiZWxpZXZlIGBtc2didWYuY2AgaXMgdXN1YWxseSBhc3NvY2lhdGVkIHdpdGggUENJRSBtb3JlIG9mdGVuLiBMZXQgbWUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04OTg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU3LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9UWF9TVEFUVVNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBDb21waWxhdGlvbiBvZiBgbXNnYnVmLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBtc2didWYuY2AgaXMgYmVpbmcgY29tcGlsZWQgd2l0aGluIHRoaXMgYnVpbGQgc3lzdGVtLiBJJiMzOTttIGVzc2VudGlhbGx5IHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHdoaWNoIG1lYW5zIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgcnVsZXMgdGhhdCBhcHBseSB0byB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB2YXJpb3VzIG1ha2VmaWxlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSXMgdGhlcmUgYSB0b3AtbGV2ZWwgYE1ha2VmaWxlYCBvcmNoZXN0cmF0aW5nIGV2ZXJ5dGhpbmcsIG9yIGlzIGl0IGEgbW9yZSBkZWNlbnRyYWxpemVkIHN0cnVjdHVyZT8gTGlrZWx5IHRoZXJlIGFyZSBpbmNsdWRlIHN0YXRlbWVudHMgdG8gb3RoZXIgYE1ha2VmaWxlYHMuIEkgc2hvdWxkIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYW55IGBNYWtlZmlsZWAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCB0aGUgc3Vycm91bmRpbmcgZGlyZWN0b3JpZXMuIEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZm9sbG93IHRoZSB0cmFpbCBvZiBpbmNsdWRlIGRpcmVjdGl2ZXMuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBsaWtlIGNvbXBpbGVyIGludm9jYXRpb25zLCBvYmplY3QgZmlsZSB0YXJnZXRzLCBhbmQgZGVwZW5kZW5jeSBydWxlcyB0aGF0IGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBpbnZvbHZlIGBtc2didWYuY2AuIExvb2sgZm9yIGFueXRoaW5nIGxpa2UgYCQoQ0MpIC1jIC4uLiBtc2didWYuY2AsIG9yIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBidWlsZCByZWNpcGVzIHRoYXQgaW5jb3Jwb3JhdGUgaXQgdGhyb3VnaCBoZWFkZXJzIG9yIGxpYnJhcmllcy4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIGV5ZSBvdXQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLCBlc3BlY2lhbGx5IGlmIHRoZSBjb2RlIHVzZXMgZGlmZmVyZW50IGNvbXBpbGF0aW9uIHRhcmdldHMuCgpJZiB0aGVyZSBpcyBhIG1vcmUgY29tcGxleCBidWlsZCBzeXN0ZW0gaW4gdXNlLCBsaWtlIGBhdXRvdG9vbHNgIG9yIGBDTWFrZWAsIEkmIzM5O2xsIG5lZWQgdG8gYWRqdXN0IG15IGFwcHJvYWNoLiBUaGV5IG1pZ2h0IHVzZSBnZW5lcmF0ZWQgbWFrZWZpbGVzIG9yIGhhdmUgdGhlaXIgb3duIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBkZWZpbmUgYnVpbGQgdGFyZ2V0cyBhbmQgZGVwZW5kZW5jaWVzLiBJbiB0aGF0IGNhc2UsIEkmIzM5O2QgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBnZW5lcmF0ZWQgbWFrZWZpbGUgYW5kIHdoYXQgdG9vbCBnZW5lcmF0ZWQgaXQuCgpVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiB1c2VkIHRvIGNvbXBpbGUgYG1zZ2J1Zi5jYCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucywgYW5kIG90aGVyIHJlbGV2YW50IGJ1aWxkIHNldHRpbmdzLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21zZ2J1ZlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZT0zMj1icmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUYpICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS0zNC1cdFx0Zmxvd3JpbmcubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM1Olx0XHRtc2didWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM2LWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1NESU8pICYjNDM7PSBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTAKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUZgIFNlbGVjdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHRyaWdnZXJzIHRoYXQgbGVhZCB0byB0aGUgaW5jbHVzaW9uIG9mIGBDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBpbiBhIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGxpa2VseSByZWxhdGVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSAmIzM0O1BST1RPX01TR0JVRiYjMzQ7IHN1ZmZpeCBpcyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIG9yIGJ1ZmZlcmluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgYSB0b29sIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IGNvZGUgcGF0aHMgcmVzcG9uc2libGUgZm9yIGNvbmRpdGlvbmFsbHkgZW5hYmxpbmcgdGhhdCBzeW1ib2wsIHByb2JhYmx5IHRocm91Z2ggYSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG1vZHVsZXMgb3IgZmVhdHVyZXMgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBkZXBlbmRlbnQgb24uCgpJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGlmIHRoaXMgY2hvaWNlIGlzIGEgJiMzNDtkZWZhdWx0JiMzNDsgZm9yIGEgYm9hcmQsIGJ1dCBtb3JlIGxpa2VseSBpcyBkZXRlcm1pbmVkIGJ5IG90aGVyIHNldHRpbmdzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY29uc2lkZXIgcmVsYXRlZCBvcHRpb25zIGluIHRoZSBgQlJDTUZNQUNgIGtjb25maWcgZmlsZSwgb3IgcG9zc2libHkgaW4gYSBwYXJlbnQgY29uZmlndXJhdGlvbiBmaWxlLCB0aGF0IGNvdWxkIGRldGVybWluZSB0aGlzIG9wdGlvbi4KCk9uY2UgSSYjMzk7dmUgaWRlbnRpZmllZCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRmAuIFdoYXQgYXJlIHRoZSByZXNvdXJjZSB0cmFkZW9mZnM/IElzIGl0IHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgKHBlcmhhcHMgb2ZmbG9hZGluZyBtZXNzYWdlIHByb2Nlc3NpbmcpPyBEb2VzIGl0IGVuYWJsZSBzcGVjaWZpYyB3aXJlbGVzcyBmZWF0dXJlcyBsaWtlIGhhcmR3YXJlIG9mZmxvYWQsIG9yIGlzIGl0IG1vcmUgb2YgYW4gaW50ZXJuYWwgZHJpdmVyIG9wdGltaXphdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGdlbmVyYXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IGhhdmUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoZSByZWxldmFudCBjb2RlIHdpdGggdGhlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gb3IgYSBkYXRhc2hlZXQsIGlmIGl0JiMzOTtzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xMT1jb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIEhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwcm92aWRlZCB0ZXh0IGFzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgbXkgdGhvdWdodCBwcm9jZXNzLCBhbmQgYXNzdW1pbmcgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIHdoYXQgdGhlIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHNlbGVjdC4gSXMgaXQgYSBzcGVjaWZpYyBlbGVtZW50LCBhIGRhdGEgcG9pbnQsIGFuIGFsZ29yaXRobT8gV2hhdCBhcmUgdGhlIGluaGVyZW50IGNoYXJhY3RlcmlzdGljcyBvZiB3aGF0ZXZlciYjMzk7cyBiZWluZyBzZWxlY3RlZD8gVW5kZXJzdGFuZGluZyB0aGUgKmlucHV0cyogaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byB0aGluayBhYm91dCB0aGUgc2VsZWN0aW9uIG1lY2hhbmlzbSBpdHNlbGYuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCwgYSBjb21wbGV4IHdlaWdodGluZyBzeXN0ZW0sIG9yIHNvbWV0aGluZyBtb3JlIGFkdmFuY2VkIGxpa2UgYSBtYWNoaW5lIGxlYXJuaW5nIG1vZGVsIGF0IHBsYXk/IEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuIE15IGV4cGVyaWVuY2UgZGljdGF0ZXMgdGhhdCBJIG11c3QgbG9vayBjbG9zZWx5IGF0IHRoZSBkYXRhLiBJJiMzOTt2ZSBzZWVuIGl0IGFsbCwgYW5kIGtub3cgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9NDA9Y29uZmlnIEJSQ01GTUFDX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0NDpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQ1LVx0c2VsZWN0IEZXX0xPQURFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTI4CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgQlJDTUZNQUMqKgoKT2theSwgc28gYEJSQ01GTUFDX1BDSUVgIHNlbGVjdHMgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAuIE15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGBCUkNNRk1BQ19QQ0lFYD8gVGhlIGFuc3dlciBoaW5nZXMgb24gUENJLCBuYXR1cmFsbHkuIEFuZCwgY2FuIHdlIGZ1enogUENJIGRldmljZXMgd2l0aGluIFFFTVU/IEdlbmVyYWxseSwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZnV6eiBqdXN0ICphbnkqIFBDSSBkZXZpY2UgdW5sZXNzIHRoZXJlJiMzOTtzIHNwZWNpZmljIHN1cHBvcnQgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9yZSBnZW5lcmljIFBDSSBmdXp6aW5nIG1lY2hhbmlzbS4gQWgsIGJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHZmaW8vcGNpYC4KCk5vdywgdGhlIHByb21wdCBicmluZ3MgdXAgYSBjcml0aWNhbCBjYXZlYXQ6IGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBsaWtlIHRob3NlIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhcmUgZXhjbHVkZWQuIElzIGBicmNtZm1hY2Agb25lIG9mIHRob3NlPyBJdCYjMzk7cyBhIEJyb2FkY29tIEZ1bGxNQUMgd2lyZWxlc3MgZHJpdmVyLCBzbywgaXQmIzM5O3MgZGVmaW5pdGVseSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKmxpa2UqIHRob3NlIGV4Y2x1ZGVkIHR5cGVzPwoKSG9sZCBvbi4uLiBJJiMzOTttIHNlZWluZyB0aGUgY29tbWl0IGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBUaGF0IG1lYW5zIHN5emthbGxlciAqZm91bmQqIHRoaXMgYnVnLCBhbmQgdGhpcyBpcyBhIHBhdGNoISBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBVU0IgYW5kIFBDSSBmdXp6ZXJzLiBJIHNob3VsZCBjaGVjayBpZiBgYnJjbWZtYWNgIGlzIGFjdHVhbGx5IGZ1enplZCBieSBzeXprYWxsZXIuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgUENJIGZ1enplciBpbiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgaXQgKmRvZXMqIGZ1enogUENJIGRldmljZXMgdXNpbmcgYSB2aXJ0dWFsIFBDSSBicmlkZ2Ugb3IgYSBzaW1pbGFyIG1lY2hhbmlzbS4gVGhlbiBJJiMzOTttIHJlbWluZGVkIG9mIHRoZSBwcm9tcHQmIzM5O3MgY29uZGl0aW9uOiByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZS4KCklzIGBicmNtZm1hY2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gTm8sIGl0JiMzOTtzIGEgV2ktRmkgZHJpdmVyLCBzbyBpdCYjMzk7cyBub3QgYW55IG9mIHRob3NlLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXImIzM5O3MgZW52aXJvbm1lbnQuIE9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaWYgYGJyY21mbWFjYCBpcyByZWFjaGFibGUsIHRoZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3BjaWVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0Mzk6YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNDQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI2NTY9c3RhdGljIGludCBicmNtZl9wY2llX3BtX2xlYXZlX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2OTA6XHRlcnIgPSBicmNtZl9wY2llX3Byb2JlKHBkZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjkxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3NjI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJyY21mX3BjaWVkcnZyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc2NC1cdC5pZF90YWJsZSA9IGJyY21mX3BjaWVfZGV2aWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3NjU6XHQucHJvYmUgPSBicmNtZl9wY2llX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY2LVx0LnJlbW92ZSA9IGJyY21mX3BjaWVfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njc3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJiMzOTtzIFBDSSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IGBicmNtZm1hY2AgdG9kYXkuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZDogaXMgdGhpcyBkcml2ZXIgKmV4Y2x1c2l2ZWx5KiB0aWVkIHRvIFBDSSwgb3IgZG9lcyBpdCBzdXBwb3J0IG90aGVyIGludGVyZmFjZXMsIHRvbz8gS25vd2luZyB0aGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHBvcnRhYmlsaXR5LCBpdHMgcG90ZW50aWFsIGFwcGxpY2F0aW9uIGluIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kLCBxdWl0ZSBmcmFua2x5LCB3aGVyZSBJIGNhbiBtYWtlIHRoZSBtb3N0IGltcGFjdCB3aXRoIGFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgY29uc2lkZXIuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIFBDSSBkZXBlbmRlbmNlIHJpZ2h0IG5vdywgYXMgdGhhdCBpbXBhY3RzIGFueSBvZiBteSBvdGhlciBpbnZlc3RpZ2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUxMwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJiMzOTtzIFRyYW5zcG9ydCBQcm90b2NvbCBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBtYXAgb2YgdGhlIGBicmNtZm1hY2AgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBTRElPLCBVU0IsIGFuZCBQQ0lFLiBOYXR1cmFsbHksIHdoZW4gYnVpbGRpbmcgYSBkcml2ZXIgd2l0aCB0aGVzZSBkaXZlcnNlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZXMsIHRoZSBwcm90b2NvbCBkZXRhaWxzIGdldCBhIGJpdCBtb3JlIGNvbXBsZXguIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYG1zZ2J1Zi5jYCBjb21wb25lbnQuIEkga25vdyB0aGF0IGZpbGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aGVuIGBCUkNNRk1BQ19QUk9UT19NU0dCVUZgIGlzIGRlZmluZWQuIFRoZSBjb25kaXRpb25hbCBsb2dpYyBwb2ludHMgdG8gYEJSQ01GTUFDX1BDSUVgIGFzIHRoZSB0cmlnZ2VyIGZvciB0aGF0IGNvbXBpbGF0aW9uIHBhdGguIE15IHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBVU0IgdHJhbnNwb3J0IGFsc28gdXNlcyB0aGUgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgcHJvdG9jb2wuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBkZXBlbmRlbmN5IG9yIGEgYnVpbGQgZmxhZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgbWVzc2FnZSBidWZmZXIgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBpbiBhIGNvbnNpc3RlbnQgZmFzaGlvbiBhY3Jvc3MgYWxsIHRoZSB0cmFuc3BvcnQgbWVkaXVtcy4gSSBuZWVkIHRvIGJlIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgdG8gZXZhbHVhdGUgdGhlIGRyaXZlciBhcmNoaXRlY3R1cmUgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlJDTUZNQUNfUFJPVE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjAtXHRkZXBlbmRzIG9uIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyMTpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yMi1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0yOT1jb25maWcgQlJDTUZNQUNfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzItXHRkZXBlbmRzIG9uIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzozMzpcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zNC1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz00MD1jb25maWcgQlJDTUZNQUNfUENJRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0Olx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDUtXHRzZWxlY3QgRldfTE9BREVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTEKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAzMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlJDTUZNQUMgQnVnIEZvdW5kIGJ5IFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0LCBhbmQgaXQgc2VlbXMgdGhpcyBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBjb2RlIHBhdGggaXMgb25seSBlbmFibGVkIGlmIHRoZSBgQlJDTUZNQUNfUENJRWAgb3B0aW9uIGlzIHNlbGVjdGVkLiBUaGF0IG1lYW5zIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIFBDSWUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRyaXZlci4gTm93LCB0aGUgb2J2aW91cyBxdWVzdGlvbiBpcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgYnV0IGlzIGl0IHNvcGhpc3RpY2F0ZWQgZW5vdWdoIHRvIGhhbmRsZSB0aGlzIHNwZWNpZmljIGBicmNtZm1hY2AgUENJZSBkcml2ZXIsIG9yIGlzIGl0IGp1c3QgbGltaXRlZCB0byBnZW5lcmljIFBDSSBkZXZpY2UgZnV6emluZz8KCldhaXQgYSBzZWNvbmTigKYgdGhlIHJlcG9ydCAqaXMqIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBTbywgaXQgKmRpZCogZmluZCBzb21ldGhpbmchIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgU3l6a2FsbGVyIGhhcyBhIHZmaW8tYmFzZWQgUENJIGZ1enplciwgd2hpY2ggY2FuIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0IG9wZW5zIHVwIGEgbXVjaCB3aWRlciBhdHRhY2sgc3VyZmFjZSBhbmQgbWVhbnMgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHdpdGhpbiBTeXprYWxsZXImIzM5O3Mgc2V0dXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIGluIHRoZSBjb21taXQuIEl0IGxvb2tzIGxpa2UgaXQgaW52b2x2ZXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgZnJlcXVlbmN5IG9mIGV4ZWN1dGlvbi4gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYC4uLiB0aGF0IHNvdW5kcyBsaWtlIGEgaG90LXBhdGggZnVuY3Rpb24sIHByb2Nlc3NpbmcgVFggc3RhdHVzIHVwZGF0ZXMuIFRoZSBvdGhlciB0d28sIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLCB0aG9zZSBhcmUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsb3cgcmluZyBtYW5hZ2VtZW50LiBIbW0sIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI2MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEyNjE6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTI2Mi1cdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzM4LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9GTE9XX1JJTkdfQ1JFQVRFX0NNUExUXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM5Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50LCBhc3N1bWluZyBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbDsgaXQmIzM5O3MgdGhlIGhlYXJ0IG9mIGhvdyBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUgYW5kIHJvdXRpbmcgdGhlbSBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtZXNzYWdlIHR5cGVzIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhbmQgaG93IHRoYXQgZGlzcGF0Y2hpbmcgbG9naWMgd29ya3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgYSBzaW1wbGUgc3dpdGNoIHN0YXRlbWVudCwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCBhbmQgZGF0YS1kcml2ZW4/JiMzNDsgQSBzaW1wbGUgc3dpdGNoIGlzIGVhc2llciB0byBmb2xsb3cgYnV0IGxlc3MgZmxleGlibGUuIEEgbW9yZSBzb3BoaXN0aWNhdGVkIG1ldGhvZCwgcGVyaGFwcyB1c2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUgb3IgYSBtZXNzYWdlLXNwZWNpZmljIGhhbmRsZXIgcmVnaXN0cnksIHdvdWxkIGxpa2VseSBiZSBtb3JlIGV4dGVuc2libGUuIEkgYWxzbyB3YW50IHRvIHNlZSB0aGUgZXJyb3IgaGFuZGxpbmcuIERvZXMgaXQgZ3JhY2VmdWxseSBoYW5kbGUgdW5rbm93biBvciBjb3JydXB0ZWQgbWVzc2FnZSB0eXBlcz8gRG9lcyBpdCBsb2cgZXJyb3JzIGluIGEgd2F5IHRoYXQmIzM5O3MgYWN0dWFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmc/IEkmIzM5O20gaG9waW5nIHRvIHNlZSBhIGdvb2QgYmFsYW5jZSBvZiBlZmZpY2llbmN5IGFuZCByb2J1c3RuZXNzIGhlcmUuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgZGVzaWduZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMjkzPWJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzMjI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODQtXHR3aGlsZSAoY291bnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzg1Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKG1zZ2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg2LVx0XHRcdFx0XHQgICAgIGJ1ZiAmIzQzOyBtc2didWYtXHUwMDNlcnhfZGF0YW9mZnNldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjM0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIGtleSB0aGluZyB0byB1bmRlcnN0YW5kIGltbWVkaWF0ZWx5IGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkOiBgYnJjbWZfbXNnYnVmX3J4YnVmYC4gVGhhdCBtZWFucyBgcnhidWZgIGlzIHRoZSBpbmNvbWluZyBkYXRhIGJ1ZmZlciBhbmQgaXQmIzM5O3MgYWN0aW5nIGFzIHRoZSBpbnB1dCB0cmlnZ2VyIGZvciB0aGlzIHNwZWNpZmljIHByb2Nlc3NpbmcgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGFyY2hpdGVjdHVyYWwgY2hhcmFjdGVyaXN0aWMgdG8gc3RhcnQgYW5hbHl6aW5nLiBUaGlzIGluZGljYXRlcyBhIGRhdGEtZHJpdmVuIG1vZGVsIHdoZXJlIHRoZSByZWNlaXB0IG9mIGEgbmV3IG1lc3NhZ2UgZnJvbSB0aGUgcmVjZWl2ZSBidWZmZXIga2lja3Mgb2ZmIHRoZSBwcmltYXJ5IGhhbmRsaW5nLiBJJiMzOTtkIG5lZWQgdG8gdHJhY2UgYGJyY21mX21zZ2J1Zl9yeGJ1ZmAgdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGNvbWluZyBmcm9tIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBkYXRhIGZsb3cgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBgcnhidWZgIGlzIGFuZCB3aGVyZSBhbmQgaG93IGl0cyBmaWxsZWQuIEl0IGxpa2VseSBzaXRzIGFzIGEgbG93ZXIgbGF5ZXIgZnVuY3Rpb24gaW4gdGhlIFJYIGRhdGEgcGF0aC4gVGhlIG5leHQgcXVlc3Rpb24gSSBoYXZlIGlzLCBkb2VzIGl0IGhhdmUgYW55IHNpZGUgZWZmZWN0cyBhbmQgd2hhdCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGFuZCBob3cgZG9lcyBpdCBhZmZlY3Qgb3RoZXIgZnVuY3Rpb25zPy4gVGhhdCYjMzk7cyBob3cgSSYjMzk7bGwgYmVnaW4gdG8gZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9yeGJ1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTI4NT1zdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyOTI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04Nzk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg5My1cdFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYtLTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTQ6XHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04OTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04OTk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MzE6c3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDEwOmJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDE3LVx0d2hpbGUgKGZpbGxidWZzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTAxODpcdFx0cmV0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KG1zZ2J1ZiwgZmlsbGJ1ZnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTktXHRcdGlmICghcmV0Y291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMjg9YnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMzItXHRcdFx0XHQgIEJSQ01GX01TR0JVRl9SWEJVRlBPU1RfVEhSRVNIT0xEKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDMzOlx0XHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTAzNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwMzc9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMzg6YnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMzktXHRcdFx0ICAgICB1MzIgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTExMTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTE1LVx0Y291bnQgPSBtc2didWYtXHUwMDNlbWF4X2lvY3RscmVzcGJ1ZiAtIG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMTY6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCBmYWxzZSwgY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTctXHRtc2didWYtXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZiAmIzQzOz0gY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTEyMTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMjUtXHRjb3VudCA9IG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYgLSBtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMjY6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCB0cnVlLCBjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyNy1cdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYgJiM0Mzs9IGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTMxPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTQ1LVx0XHRtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmLS07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE0NjpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTU2MT1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjU1LVx0ZG8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NTY6XHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjU3LVx0XHRpZiAobXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QgIT0gbXNnYnVmLVx1MDAzZXJ4YnVmcG9zdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY2Mi1cdH0gd2hpbGUgKGNvdW50IFx1MDAzYyAxMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2MzpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2NDpcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTExCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgYXMgYW4gZXhwZXJpZW5jZWQgZW5naW5lZXI6CgoqKkFuYWx5emluZyBNZXNzYWdlIEJ1ZmZlciBQcm9jZXNzaW5nIGluIHRoZSBicmNtZiBEcml2ZXIqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21lIG1vZGlmaWNhdGlvbnMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbXBhY3QuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgc2VlbSBmb2N1c2VkIG9uIHRoZXNlIGZ1bmN0aW9uczogYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBUaGVzZSBhcmUgYWxsIHByb2Nlc3NpbmcgbWVzc2FnZXMgb3IgaGFuZGxpbmcgcmVzcG9uc2VzIHJlbGF0ZWQgdG8gdHJhbnNtaXQgc3RhdHVzIG9yIGZsb3cgcmluZyBvcGVyYXRpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhlc2UgY2hhbmdlcy4KCkkgc2VlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2FsbGVkIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgbGlrZWx5IGEgZGlzcGF0Y2hlciB0aGF0IHJvdXRlcyBtZXNzYWdlcyBiYXNlZCBvbiB0aGVpciB0eXBlLiBUaGVuIEkgc2VlIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBaC1oYSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBmcm9tIHRoZSBQQ0lFIGRyaXZlciYjMzk7cyBpbnRlcnJ1cHQgaGFuZGxlciBvciBhIHRhc2tsZXQuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgcHJvY2Vzc2luZywgb3IgZGVmZXJyZWQgaW50ZXJydXB0IHByb2Nlc3NpbmcsIHdoaWNoIGlzIHZlcnkgY29tbW9uIGluIGRyaXZlciBkZXZlbG9wbWVudC4gVGhpcyBhbHNvIGdpdmVzIGEgaGludCBhcyB0byB0aGUgdGltaW5nIGFuZCBjb25jdXJyZW5jeSBjb25zdHJhaW50cyB0aGF0IGFyZSBpbiBwbGF5LgoKTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBvdGhlciBjYWxsZXJzIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgbmV3IGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCwgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIGlzc3Vlcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY2FsbCBncmFwaCBmb3IgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9SWF9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE1LVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE2Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQxMAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIHRoZSBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlciBGdW5jdGlvbioqCgpPa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIGNsZWFybHkgdGhlIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgZW50cnkgcG9pbnQsIGlmIHlvdSB3aWxsLiBUaGUgZmxvdyBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLCBhbmQgdGhpcyBpcyBpdCBmb3IgdGhlIG1lc3NhZ2UgYnVmZmVyIHJlY2VpdmUuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSB1cHN0cmVhbSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gdGhpcyBmdW5jdGlvbiBnZXR0aW5nIGludm9rZWQuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSByZWFsIGdyYXNwIG9mIGhvdyBkYXRhIGZsb3dzIGludG8gdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY3Jvc3MtcmVmZXJlbmNlcyB0ZWxsIHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQwMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzItdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTU1LVx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjk1NjpcdFx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXHRcdFx0XHRcdFx0XHRcdTAwMjZkZXZpbmZvLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcG90ZW50aWFsIHRhcmdldCBoZXJlLCBzdGFydGluZyB3aXRoIGBicmNtZl9wY2llX2lzcl90aHJlYWRgLiBUaGF0JiMzOTtzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIFBDSUUgZGV2aWNlLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIHByb2JlZCBhbmQgaW50ZXJydXB0cyBhcmUgb2NjdXJyaW5nIOKAkyBhIGdvb2Qgc2lnbiEgQW5kIHllcywgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGEgbmV0d29yayBkcml2ZXIuIFNvLCBpcyBmdXp6aW5nIHdhcnJhbnRlZD8gQWJzb2x1dGVseS4KCkluaXRpYWxseSwgSSB6ZXJvZWQgaW4gb24gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBIb3dldmVyLCB0aGUgcHJvbXB0IHN0cmVzc2VzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyDigJMgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBjYW4gYmUgaW5saW5lZCBhbmQgZG9uJiMzOTt0IG9mZmVyIGRpc3RpbmN0IHN5bWJvbHMgZm9yIHVzIHRvIHRhcmdldC4gV2FpdCBhIG1pbnV0ZSwgYWxsIHRob3NlIGZ1bmN0aW9ucyAqYXJlKiBzdGF0aWMuCgpUaGUgYWN0dWFsIGVudHJ5cG9pbnQgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBJIG5lZWQgdG8gY29uZmlybSBpdCYjMzk7cyBub24tc3RhdGljLCBhbmQgdGhhbmtmdWxseSwgaXQgaXMuIExvb2tzIGxpa2UgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdC4KCk5vdywgY2hlY2tpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfUENJRWAsIGFuZCBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCAod2hpY2ggaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBieSBgQlJDTUZNQUNfUENJRWApLiBMZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhvc2UgZGVwZW5kZW5jaWVzIGZvciBgQlJDTUZNQUNfUENJRWAgYXJlIGFsbCBzYXRpc2ZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19QQ0lFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0yOT1jb25maWcgQlJDTUZNQUNfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3NgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJSQ01GTUFDIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYnJjbWZtYWNgIG1vZHVsZSwgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIGZvY3VzIG9uIGFyb3VuZCBsaW5lIDQwIHRvIHNlZSB3aGF0IHRoZSBpbml0aWFsIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZCB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gc2VlIGhvdyB0aGUgbW9kdWxlIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBpdCYjMzk7cyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBCUkNNRk1BQ19QQ0lFXG4gIDQxOlx0XHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDQ6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgNDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDQ4Olx0XHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICA0OTpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY4OAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQlJDTUZNQUMgYW5kIEJSQ01GTUFDX1BDSUUgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfUENJRWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb21wYXJlIGFuZCBjb250cmFzdCB0aGVtLiBIYW5nIG9uLCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeS4gSXMgYEJSQ01GTUFDYCBhIGJhc2UgY29uZmlndXJhdGlvbiB0aGF0IGBCUkNNRk1BQ19QQ0lFYCBidWlsZHMgdXBvbiwgb3IgaXMgdGhlcmUgYW5vdGhlciByZWxhdGlvbnNoaXAgaW4gcGxheT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBCUkNNRk1BQ2AgaGFzIHByZXJlcXVpc2l0ZXMgb3IgaWYgaXQgcmVsaWVzIG9uIG90aGVyIG1vZHVsZXMgdG8gZnVuY3Rpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGludGVncmF0aW9uIGFuZCBob3cgYW55IG1vZGlmaWNhdGlvbnMgY2FzY2FkZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgd2lsbCBsb29rIGZvciBhbnkgZGVwZW5kZW5jaWVzIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIEJSQ01GTUFDXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA0Olx0XHRzZWxlY3QgQlJDTVVUSUxcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxuICAgNzpcdFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXG4gICA4Olx0XHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkXG4gICA5Olx0XHQgIGJyY21mbWFjLmtvLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDEyOlx0XHRib29sXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBCUkNNRk1BQ19TRElPXG4gIDE4Olx0XHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcbiAgMjA6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyMTQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJSQ01GTUFDIE1vZHVsZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgQlJDTUZNQUNgIG1vZHVsZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nOyBpdCYjMzk7cyBhIHByZXR0eSBmdW5kYW1lbnRhbCB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gU28sIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBDRkc4MDIxMWAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LCBhbmQgdGhlbiBhbHNvIGBCUkNNRk1BQ2AgaXRzZWxmLCBhbG9uZyB3aXRoIGBCUkNNRk1BQ19QQ0lFYCBzaW5jZSBpdCBtaWdodCBiZSBQQ0ktc3BlY2lmaWMuCgpIb2xkIG9uIGEgc2VjLi4uIGBCUkNNRk1BQ19QQ0lFYCBkZXBlbmRzIG9uIGBQQ0lgLiBPa2F5LCAqdGhhdCogZGVwZW5kZW5jeSBpcyBhbG1vc3QgYWx3YXlzIHNhdGlzZmllZDsgUENJJiMzOTtzIHVzdWFsbHkgYmFrZWQgaW4gdG8gdGhlIHN5c3RlbS4gU3RpbGwsIHdvcnRoIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgbm90aGluZyYjMzk7cyBiZWVuIGluYWR2ZXJ0ZW50bHkgZGlzYWJsZWQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZWFsbHkgbG9vayBpbnRvIGhvdyB0aGVzZSBtZXNzYWdlIGJ1ZmZlcnMgYXJlIGhhbmRsZWQuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHdpdGhpbiB0aGUgYGJyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZHJpdmVyIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIG1vZHVsZSBhY3R1YWxseSBoYW5kbGVzIGluY29taW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDAwOlx0fVxuMTQwMTpcdFxuMTQwMjpcdFxuMTQwMzpcdGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4xNDA0Olx0e1xuMTQwNTpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4xNDA2Olx0XHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVx1MDAzZWRydnI7XG4xNDA3Olx0XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQ7XG4xNDA4Olx0XHRzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZztcbjE0MDk6XHRcdHZvaWQgKmJ1ZjtcbjE0MTA6XHRcdHUzMiBmbG93aWQ7XG4xNDExOlx0XHRpbnQgcWxlbjtcbjE0MTI6XHRcbjE0MTM6XHRcdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG4xNDE0Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG4xNDE1Olx0XHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfVFhfQ09NUExFVEVdO1xuMTQxNjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuMTQxNzpcdFx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX0NPTlRST0xfQ09NUExFVEVdO1xuMTQxODpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuMTQxOTpcdFxuMTQyMDpcdFx0Zm9yX2VhY2hfc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cdTAwM2V0eHN0YXR1c19kb25lX21hcCxcbjE0MjE6XHRcdFx0XHQgbXNnYnVmLVx1MDAzZW1heF9mbG93cmluZ3MpIHtcbjE0MjI6XHRcdFx0Y2xlYXJfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwKTtcbjE0MjM6XHRcdFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbjE0MjQ6XHRcdFx0cWxlbiA9IGJyY21mX2Zsb3dyaW5nX3FsZW4obXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTQyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVNHQlVGIFJpbmcgUHJvY2Vzc2luZyoqCgpPa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHRoZSBjb3JlIGVudHJ5IHBvaW50LCB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoZSBwcm9jZXNzaW5nIG9mIE1TR0JVRiByaW5ncy4gTm8gcXVlc3Rpb24gdGhlcmUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoOyBhcmUgdGhlcmUgYW55ICpvdGhlciogcG9zc2libGUgZW50cnkgcG9pbnRzIEkmIzM5O20gb3Zlcmxvb2tpbmc/CgpMZXQmIzM5O3MgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCBiYWNrLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBbmQgZmluYWxseSwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvcmlnaW5hdGVzIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4KCkFoLCB0aGVyZSYjMzk7cyB0aGUgY29uZmlybWF0aW9uLiBUaGUgY2FsbCBzdGFjayBtYWtlcyBpdCBjbGVhci4gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBhY3RzIGFzIHRoZSByb290LCBpdCYjMzk7cyB0aGUgcGVyZmVjdCBmdW5jdGlvbiB0byB0YXJnZXQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiB3YXkgdG8gcmVhY2ggYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYC4gSnVzdCB3YW50IHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgYWx0ZXJuYXRpdmUgcGF0aHMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9ODk4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODk5OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1Ny1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7TVNHQlVGX1RZUEVfVFhfU1RBVFVTXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzU4Olx0XHRicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1OS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTUwCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBmb2N1c2luZyBvbiB0aGUgY29yZSBjb25jZXB0OgoKKipOYXJyb3dpbmcgdGhlIEZvY3VzOiBUaGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIEZ1bmN0aW9uKioKCk15IG1pbmQgaXMgbGFzZXItZm9jdXNlZCByaWdodCBub3cuIEkmIzM5O20gZHJpbGxpbmcgZG93biB0byBhIHNwZWNpZmljIGZ1bmN0aW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIHByb2Nlc3NpbmcgaXMgaGFwcGVuaW5nLCBhbmQgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLiBObyBkaXN0cmFjdGlvbnMsIG5vIGV4dHJhbmVvdXMgY29udGV4dCwganVzdCB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyB0aGUgcGl2b3RhbCBwb2ludCBpbiB0aGlzIHdob2xlIHN5c3RlbSwgdGhlIGxpa2VseSBmdWxjcnVtIG9mIHRoZSBlbnRpcmUgbWVzc2FnZSBoYW5kbGluZyBwcm9jZXNzLCBhbmQgd2hhdCBoYXMgZHJhd24gbXkgaW1tZWRpYXRlIGF0dGVudGlvbi4gQWxsIG90aGVyIGNvbnNpZGVyYXRpb25zIGNhbiB3YWl0OyB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBtZXNzYWdlIHR5cGVzLCBhcmUgcGFyYW1vdW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI5Mz1icmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIyOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzNzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg0LVx0d2hpbGUgKGNvdW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM4NTpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM4Ni1cdFx0XHRcdFx0ICAgICBidWYgJiM0MzsgbXNnYnVmLVx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU2OQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgc29sZWx5IG9uIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGA6CgoqKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAqKgoKT2theSwgc28gdGhlIHRob3VnaHQgdHJhaW4gaGFzIG5hcnJvd2VkIGRvd24gdG8ganVzdCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCB0ZWxscyBtZSB0aGF0IHRoZSBmb2N1cyBpcyAqZXhjbHVzaXZlbHkqIG9uIGhhbmRsaW5nIHJlY2VpdmVkIG1lc3NhZ2VzIHdpdGhpbiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgb24gdGhlIHJlY2VpdmVyIHNpZGUgb2YgdGhlIGNvbW11bmljYXRpb24uIE5vdGhpbmcgZWxzZSBpcyB1bmRlciBjb25zaWRlcmF0aW9uIHJpZ2h0IG5vdyDigJMgbm8gdHJhbnNtaXQgcGF0aHMsIGluaXRpYWxpemF0aW9uLCBvciBlcnJvciBoYW5kbGluZyBiZXlvbmQgd2hhdCYjMzk7cyBpbnRyaW5zaWMgdG8gdGhlIHJlY2VpdmUgcHJvY2Vzcy4KCkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZldyBrZXkgcXVlc3Rpb25zLiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBJcyB0aGlzIGJlaW5nIGFuYWx5emVkIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgYSBzcGVjaWZpYyBidWcsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIG9yIHNpbXBseSBhIGdlbmVyYWwgY29kZSByZXZpZXcgcmVsYXRlZCB0byByZWNlaXZlIG1lc3NhZ2UgcHJvY2Vzc2luZz8gVW5kZXJzdGFuZGluZyB0aGUgaW5wdXQgYW5kIG91dHB1dCBmbG93cyB0byBhbmQgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsLiBXaGF0IGtpbmQgb2YgYnVmZmVyaW5nIGlzIGludm9sdmVkLCBhbmQgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byB0aGluayBhYm91dD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBETUEgb3IgQ1BVLWRyaXZlbiBtZXNzYWdlIHByb2Nlc3NpbmcgaGVyZT8KClNpbmNlIGl0JiMzOTtzIGZvY3VzZWQgb24gYHJ4YCwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRhdGEgdmFsaWRhdGlvbiwgbWVzc2FnZSBwYXJzaW5nLCBhbmQgaG93IHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBtZXNzYWdlIGl0JiMzOTtzIHJlY2VpdmVkLiBJcyB0aGVyZSBhbnkgcGFydGljdWxhciBtZXNzYWdlIHR5cGUgb3IgdHlwZXMgdGhhdCBhcmUgY2F1c2luZyBjb25jZXJuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBjb25kaXRpb25zIHRoYXQgY291bGQgY29tcHJvbWlzZSBzZWN1cml0eT8gVGhlIGludHJpY2FjaWVzIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBtYW5hZ2VtZW50IGJlY29tZSBwYXJhbW91bnQg4oCTIG1lbW9yeSBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIGFuZCB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgaW50ZWdyaXR5IG9mIHRoZSBkYXRhIGl0IGNvbnRhaW5zLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGhhcyB0byBiZSB3ZWxsLXZldHRlZC4gSXRzIHZ1bG5lcmFiaWxpdHkgY2FuIGNvbXByb21pc2UgdGhlIGVudGlyZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9SWF9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE1LVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE2Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgRW50cnkgUG9pbnQqKgoKT2theSwgc28gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyB0aGUgc29sZSBlbnRyeSBwb2ludCwgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBjb25maXJtIGlmIGl0JiMzOTtzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEV4YW1pbmluZyB0aGUgY29kZSwgaXQmIzM5O3MgaW5kZWVkIHRoZSBkZXNpZ25hdGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBSWCBtZXNzYWdlcyBvcmlnaW5hdGluZyBmcm9tIHRoZSBkZXZpY2UuIENydWNpYWxseSwgaXQmIzM5O3MgaW52b2tlZCBkaXJlY3RseSBmcm9tIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIGl0JiMzOTtzIGFsc28gbm9uLXN0YXRpYy4gVGhvc2UgZmFjdG9ycyBwb2ludCB0byBpdHMgc2lnbmlmaWNhbmNlLiBZZXMsIGl0JiMzOTtzIGEgc3Ryb25nIGZvY3VzIHBvaW50LgoKTm93LCBsZXQmIzM5O3MgZXN0YWJsaXNoIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgIGFzIHBvdGVudGlhbCBmbGFncy4gQWgsIGEgZGVwZW5kZW5jeSBpcyBhcHBhcmVudDogYEJSQ01GTUFDYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFdlIGtub3cgYENGRzgwMjExYCBpcyB0cmlzdGF0ZSwgYnV0IGxpa2VseSB3aWxsIGJlIHNldC4gRnVydGhlcm1vcmUsIGBCUkNNRk1BQ19QQ0lFYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEJSQ01GTUFDYCBhbmQgYFBDSWAuIFNpbmNlIGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBtb3N0IHN5c3RlbXMsIHdlIGNhbiBzYWZlbHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuCgpKdXN0IHRvIGVuc3VyZSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGBDRkc4MDIxMWAgaXRzZWxmIGhhcyBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzkxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBDRkc4MDIxMSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDRkc4MDIxMWAgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCByZWxpZXMgb24gYFJGS0lMTCB8fCAhUkZLSUxMYC4gVGhhdCBzZWVtcyBhIGJpdC4uLnJlZHVuZGFudCwgZG9lc24mIzM5O3QgaXQ/IEl0JiMzOTtzIGJhc2ljYWxseSBhbHdheXMgZW5hYmxlZC4gVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGdvaW5nIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnN1bHQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGFjdHVhbCBsb2dpYzsgSSYjMzk7bGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSAxNywgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhvc2UgY29tcG9uZW50cyBhcmUuIEkgaGF2ZSBhIGh1bmNoIHRoZXJlJiMzOTtzIG1vcmUgdG8gdGhpcyB0aGFuIG1lZXRzIHRoZSBleWUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IHBvdGVudGlhbCBjb25kaXRpb25hbCBpbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTc2CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNDA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVwZW5kZW5jeSB0cmVlOiBgQ0ZHODAyMTFgIGhpbmdlcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBTaW5jZSBgUkZLSUxMYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhhdCBnaXZlcyB1cyBhIHN0YXJ0aW5nIHBvaW50LiBBbmQgb2YgY291cnNlLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXJlIHRvIGZvY3VzIHRoZSBmdXp6aW5nLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBtaWdodCBiZSBhIGdvb2QgdGFyZ2V0LiBJdCYjMzk7cyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWF0ZXMgdGhlIHByb2Nlc3Npbmcgb2YgaW5jb21pbmcgUlggbWVzc2FnZXMgZnJvbSB0aGUgZGV2aWNlLCBhbmQgY3J1Y2lhbGx5LCBpdCBnZXRzIGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gSW1wb3J0YW50bHksIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBMZXQmIzM5O3Mgc2VlLi4uIHllcCwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgZ29vZCBmaXJzdCBjYW5kaWRhdGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZXhwbG9yZSByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIHNlZW1zIHRvIHRvdWNoIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYW5kIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlYC4gVGhlc2UgYWxsIGZlZWQgaW50byBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4gQW5kIGZpbmFsbHksIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaXMgY2FsbGVkIGJ5IG91ciBpbml0aWFsIHRyaWdnZXIsIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIFNvLCB0aGUgY2FsbCBzdGFjayBzb2xpZGlmaWVzIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGJlc3QgaW5pdGlhbCBmb2N1cy4KCldhaXQgYSBzZWNvbmQuLi4gSSBzZWUgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYC4gTm93IEkmIzM5O20gd29uZGVyaW5nIGlmICp0aGF0KiBpcyBhIGJldHRlciB0YXJnZXQ/IE9oLCBidXQgYGJyY21mX3BjaWVfaXNyX3RocmVhZGAgaXMgc3RhdGljLi4uIHNvIG5vLCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHN0aWxsIHRoZSBzdXBlcmlvciBjaG9pY2UuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgZW50cnkgcG9pbnRzIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4uLiBzZWVtcyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvbmx5IGdldHMgY2FsbGVkIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4gRXhjZWxsZW50LiBUaGF0IGNvbmZpcm1zIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc19yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExNzQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTc1OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzIyPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjEtXHRcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O01TR0JVRl9UWVBFX1JYX0NNUExUXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzYyOlx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM3MTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM3Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTQwMz1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDEzLVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE0Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfVFhfQ09NUExFVEVdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxNy1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19DT05UUk9MX0NPTVBMRVRFXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE4Olx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQ2CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDI3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcm9hZGNvbSBXTEFOIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIG5vIG90aGVyIGFjdGl2ZSBpbnZlc3RpZ2F0aW9ucyBhdCB0aGUgbW9tZW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhpcyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHN5bWJvbC4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBpdCYjMzk7cyB0aWVkIHRvIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBzcGVjaWZpY2FsbHkgYEJSQ01GTUFDX1BDSUVgLCBzbyB0aGlzIGlzIGEgUENJZS1yZWxhdGVkIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIGlzc3VlLgoKVGhlIHN1bW1hcnkgZGVzY3JpYmVzIGEgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgYGJyY21mbWFjYCBkcml2ZXIuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggaW50byBgbXNnYnVmLSZndDtmbG93cmluZ3NgLiBNYWtlcyBzZW5zZTsgdGhhdCYjMzk7cyB0aGUgY2xhc3NpYyBhcnJheSBhY2Nlc3MgdnVsbmVyYWJpbGl0eS4gVGhlIHZ1bG5lcmFibGUgZnVuY3Rpb25zLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAsIGFyZSBhbGwgdHJpZ2dlcmVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wg4oCTIHdoaWNoIGlzIGEgUENJRS1zcGVjaWZpYyB0aGluZy4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgZXhwbG9pdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBhIGtleSBwb2ludCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nIGxpa2Ugc3l6a2FsbGVyLiBUaGUgY29kZSBjaGFuZ2UgYWZmZWN0cyBjb3JlIGRyaXZlciBmdW5jdGlvbmFsaXR5LgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIEl0JiMzOTtzIG5vbi1zdGF0aWMsIGRlY2xhcmVkIGluIGBtc2didWYuaGAuIFRoaXMgY29uZmlybXMgaXQmIzM5O3MgYSBnb29kIGZvY2FsIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEl0IHNlZW1zIHdlIGhhdmUgYSByZWFzb25hYmx5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19QQ0lFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXImIzM5O3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19QQ0lFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXImIzM5O3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDMuNTYwNDE5MDQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTU4ODg0NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfUENJRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXFx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJ3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0My41NjA0MjU0NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjE1OTk4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAzNWQ2YmEyZWJkY2U3Yzg5MzNmYzFmOGQyZmNjZGEyYWJjMjQyNmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXFxuaW5kZXggYmExY2UxNTUyZTBmNDMuLjgxNDZkNTBkNmYwNzJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbkBAIC01NjAsNiArNTYwLDI4IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVxcdTAwM2VmbG93LCBmbG93aWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuK1xcdFxcdFxcdFxcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcXG4re1xcbitcXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XFxuK1xcbitcXHRpZiAoaWQgXFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XFxuK1xcdFxcdGJwaHlfZXJyKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgXFxcImludmFsaWQgZmxvd3JpbmcgaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBmbG93X3JpbmdfaWQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGlmIChpZCBcXHUwMDNlPSBtc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpIHtcXG4rXFx0XFx0YnBoeV9lcnIobXNnYnVmLVxcdTAwM2VkcnZyLCBcXFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZsb3dfcmluZ19pZCk7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0KmZsb3dpZCA9IGlkO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqXFxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbkBAIC04ODAsMTcgKzkwMiwyMyBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4gXFx0c3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKnR4X3N0YXR1cztcXG4gXFx0dTMyIGlkeDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0dTE2IGZsb3dfcmluZ19pZDtcXG4gXFx0dTE2IGZsb3dpZDtcXG4gXFxuIFxcdHR4X3N0YXR1cyA9IChzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqKWJ1ZjtcXG4gXFx0aWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vtc2cucmVxdWVzdF9pZCkgLSAxO1xcbi1cXHRmbG93aWQgPSBsZTE2X3RvX2NwdSh0eF9zdGF0dXMtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4gXFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzLCBpZHgpO1xcbiBcXHRpZiAoIXNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpIHtcXG4rXFx0XFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgdHhfc3RhdHVzLVxcdTAwM2Vtc2cuaWZpZHgpLFxcbitcXHRcXHRcXHRcXHQgc2tiLCBmYWxzZSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0c2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xcbiBcXHRjb21tb25yaW5nID0gbXNnYnVmLVxcdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcXG4gXFx0YXRvbWljX2RlYyhcXHUwMDI2Y29tbW9ucmluZy1cXHUwMDNlb3V0c3RhbmRpbmdfdHgpO1xcbkBAIC0xMjM3LDEzICsxMjY1LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcXG4gXFx0dTE2IHN0YXR1cztcXG4gXFx0dTE2IGZsb3dpZDtcXG4rXFx0dTE2IGZsb3dfcmluZ19pZDtcXG4gXFxuIFxcdGZsb3dyaW5nX2NyZWF0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfY3JlYXRlX3Jlc3AgKilidWY7XFxuIFxcbi1cXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuLVxcdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xcbitcXHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuIFxcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cXHUwMDNlY29tcGxfaGRyLnN0YXR1cyk7XFxuIFxcbitcXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcXHUwMDI2Zmxvd2lkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKHN0YXR1cykge1xcbiBcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbiBcXHRcXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcXG5AQCAtMTI2NiwxMyArMTI5NywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XFxuIFxcdHUxNiBzdGF0dXM7XFxuIFxcdHUxNiBmbG93aWQ7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcbiBcXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xcbiBcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbiBcXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGlmIChzdGF0dXMpIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG4gXFx0XFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDMuOTYzMjc5MzgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAzNTU2MDE1NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfUENJRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKSBieSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggdG8gYWNjZXNzIGBtc2didWYtXFx1MDAzZWZsb3dyaW5nc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AsIGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgKSBhcmUgY2FsbGVkIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UgdmlhIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFBDSUUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCB2aWEgc3l6a2FsbGVyJ3MgdmlydHVhbCBQQ0kgZnV6emVyKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMzVkNmJhMmViZGNlN2M4OTMzZmMxZjhkMmZjY2RhMmFiYzI0MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6NTE6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IGJhMWNlMTU1MmUwZjQzLi44MTQ2ZDUwZDZmMDcyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5AQCAtNTYwLDYgKzU2MCwyOCBAQCBicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnJjbWZfbXNnYnVmX2dldF9mbG93aWQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuK1x0XHRcdFx0ICAgIHUxNiBmbG93X3JpbmdfaWQsIHUxNiAqZmxvd2lkKVxuK3tcbitcdHUzMiBpZCA9IGZsb3dfcmluZ19pZDtcbitcbitcdGlmIChpZCBcdTAwM2MgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkge1xuK1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCJpbnZhbGlkIGZsb3dyaW5nIGlkICV1XFxuXCIsXG4rXHRcdFx0IGZsb3dfcmluZ19pZCk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XG4rXHRpZiAoaWQgXHUwMDNlPSBtc2didWYtXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xuK1x0XHRicGh5X2Vycihtc2didWYtXHUwMDNlZHJ2ciwgXCJpbnZhbGlkIGZsb3dyaW5nIGlkICV1XFxuXCIsXG4rXHRcdFx0IGZsb3dfcmluZ19pZCk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdCpmbG93aWQgPSBpZDtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuQEAgLTg4MCwxNyArOTAyLDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0c3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKnR4X3N0YXR1cztcbiBcdHUzMiBpZHg7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBtc2didWYtXHUwMDNldHhfcGt0aWRzLCBpZHgpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpIHtcbitcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbitcdFx0XHRcdCBza2IsIGZhbHNlKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0c2V0X2JpdChmbG93aWQsIG1zZ2J1Zi1cdTAwM2V0eHN0YXR1c19kb25lX21hcCk7XG4gXHRjb21tb25yaW5nID0gbXNnYnVmLVx1MDAzZWZsb3dyaW5nc1tmbG93aWRdO1xuIFx0YXRvbWljX2RlYyhcdTAwMjZjb21tb25yaW5nLVx1MDAzZW91dHN0YW5kaW5nX3R4KTtcbkBAIC0xMjM3LDEzICsxMjY1LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqZmxvd3JpbmdfY3JlYXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjY2LDEzICsxMjk3LDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0My45NjMyODA0MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQ4ODY3ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBpbiB0aGUgYGJyY21mbWFjYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgLCB0byB2YWxpZGF0ZSB0aGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIHN1YnRyYWN0aW5nIGBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gZGVhbGluZyB3aXRoIGBtc2didWYtXHUwMDNlZmxvd3JpbmdzW2Zsb3dpZF1gIGFuZCBzaW1pbGFyIGFycmF5IGFjY2Vzc2VzLiBHb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IElzIHRoaXMgcGF0Y2ggZXZlbiByZWxldmFudCB0byBvdXIgZnV6emluZyBlZmZvcnRzPyBgYnJjbWZtYWNgIGlzIGEgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIEhtbSwgY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gV2UgdXN1YWxseSBoYXZlIGx1Y2sgZnV6emluZyB3aXJlbGVzcyBkcml2ZXJzIGlmIHRoZXkncmUgZXhwb3NlZCB0aHJvdWdoIFVTQiwgU0RJTywgb3Igc29tZSBraW5kIG9mIHZpcnR1YWwgYnVzLiBUaGUgZ29vZCBuZXdzIGlzIGBicmNtZm1hY2Agc3VwcG9ydHMgU0RJTywgVVNCLCBhbmQgUENJRS5cblxuU28sIFVTQiBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUuIFdlIHNob3VsZCBiZSBhYmxlIHRvIGhvb2sgaXQgdXAgdXNpbmcgZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuIFNESU8gbWlnaHQgYmUgcG9zc2libGUgdG9vLCAqaWYqIHdlIGNhbiBmaW5kIG9yIGJ1aWxkIGFuIGVmZmVjdGl2ZSBTRElPIGZ1enplci4gQnV0IFVTQiBpcyB0aGUgbW9yZSBwcm9taXNpbmcgcm91dGUuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBpcyBhY3R1YWxseSB1c2VkIGZvciBVU0IuIExldCdzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLCBvciByZWxhdGVkIFVTQi1zcGVjaWZpYyBjb2RlLiBXYWl0LCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2UsIEkgYmVsaWV2ZSBgbXNnYnVmLmNgIGlzIHVzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIFBDSUUgbW9yZSBvZnRlbi4gTGV0IG1lIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI2LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NDkuNzEyMTUwOTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDkwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg5OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTctXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1RYX1NUQVRVU1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo0OS43NzQ2NDg3MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYyMDU2NjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIENvbXBpbGF0aW9uIG9mIGBtc2didWYuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXNnYnVmLmNgIGlzIGJlaW5nIGNvbXBpbGVkIHdpdGhpbiB0aGlzIGJ1aWxkIHN5c3RlbS4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHdoaWNoIG1lYW5zIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgcnVsZXMgdGhhdCBhcHBseSB0byB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUuXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgbWFrZWZpbGVzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLiBJcyB0aGVyZSBhIHRvcC1sZXZlbCBgTWFrZWZpbGVgIG9yY2hlc3RyYXRpbmcgZXZlcnl0aGluZywgb3IgaXMgaXQgYSBtb3JlIGRlY2VudHJhbGl6ZWQgc3RydWN0dXJlPyBMaWtlbHkgdGhlcmUgYXJlIGluY2x1ZGUgc3RhdGVtZW50cyB0byBvdGhlciBgTWFrZWZpbGVgcy4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBhdCBhbnkgYE1ha2VmaWxlYCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIHRoZSBzdXJyb3VuZGluZyBkaXJlY3Rvcmllcy4gRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwgb2YgaW5jbHVkZSBkaXJlY3RpdmVzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGxpa2UgY29tcGlsZXIgaW52b2NhdGlvbnMsIG9iamVjdCBmaWxlIHRhcmdldHMsIGFuZCBkZXBlbmRlbmN5IHJ1bGVzIHRoYXQgZXhwbGljaXRseSBvciBpbXBsaWNpdGx5IGludm9sdmUgYG1zZ2J1Zi5jYC4gTG9vayBmb3IgYW55dGhpbmcgbGlrZSBgJChDQykgLWMgLi4uIG1zZ2J1Zi5jYCwgb3IgcG90ZW50aWFsbHkgbW9yZSBjb21wbGV4IGJ1aWxkIHJlY2lwZXMgdGhhdCBpbmNvcnBvcmF0ZSBpdCB0aHJvdWdoIGhlYWRlcnMgb3IgbGlicmFyaWVzLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIGRpZmZlcmVudCBjb21waWxhdGlvbiB0YXJnZXRzLlxuXG5JZiB0aGVyZSBpcyBhIG1vcmUgY29tcGxleCBidWlsZCBzeXN0ZW0gaW4gdXNlLCBsaWtlIGBhdXRvdG9vbHNgIG9yIGBDTWFrZWAsIEknbGwgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIFRoZXkgbWlnaHQgdXNlIGdlbmVyYXRlZCBtYWtlZmlsZXMgb3IgaGF2ZSB0aGVpciBvd24gY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IGRlZmluZSBidWlsZCB0YXJnZXRzIGFuZCBkZXBlbmRlbmNpZXMuIEluIHRoYXQgY2FzZSwgSSdkIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZ2VuZXJhdGVkIG1ha2VmaWxlIGFuZCB3aGF0IHRvb2wgZ2VuZXJhdGVkIGl0LlxuXG5VbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiB1c2VkIHRvIGNvbXBpbGUgYG1zZ2J1Zi5jYCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucywgYW5kIG90aGVyIHJlbGV2YW50IGJ1aWxkIHNldHRpbmdzLiBUaGF0J2xsIGdpdmUgbWUgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MTo1My44MzY3MDc5MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMzM5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXNnYnVmXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlPTMyPWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRikgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM0LVxcdFxcdGZsb3dyaW5nLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTozNTpcXHRcXHRtc2didWYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS0zNi1icmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSArPSBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUxOjUzLjg5OTc0NjY1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzYzMzg1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQ09ORklHX0JSQ01GTUFDX1BST1RPX01TR0JVRmAgU2VsZWN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHRyaWdnZXJzIHRoYXQgbGVhZCB0byB0aGUgaW5jbHVzaW9uIG9mIGBDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBpbiBhIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGxpa2VseSByZWxhdGVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSBcIlBST1RPX01TR0JVRlwiIHN1ZmZpeCBpcyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIG9yIGJ1ZmZlcmluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gdXNlIGEgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IGNvZGUgcGF0aHMgcmVzcG9uc2libGUgZm9yIGNvbmRpdGlvbmFsbHkgZW5hYmxpbmcgdGhhdCBzeW1ib2wsIHByb2JhYmx5IHRocm91Z2ggYSBgS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbW9kdWxlcyBvciBmZWF0dXJlcyB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlcGVuZGVudCBvbi5cblxuSSBzaG91bGQgYWxzbyBjb25zaWRlciBpZiB0aGlzIGNob2ljZSBpcyBhIFwiZGVmYXVsdFwiIGZvciBhIGJvYXJkLCBidXQgbW9yZSBsaWtlbHkgaXMgZGV0ZXJtaW5lZCBieSBvdGhlciBzZXR0aW5ncyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNvbnNpZGVyIHJlbGF0ZWQgb3B0aW9ucyBpbiB0aGUgYEJSQ01GTUFDYCBrY29uZmlnIGZpbGUsIG9yIHBvc3NpYmx5IGluIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhhdCBjb3VsZCBkZXRlcm1pbmUgdGhpcyBvcHRpb24uXG5cbk9uY2UgSSd2ZSBpZGVudGlmaWVkIHRoZSBkZXBlbmRlbmNpZXMsIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgYENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUZgLiBXaGF0IGFyZSB0aGUgcmVzb3VyY2UgdHJhZGVvZmZzPyBJcyBpdCByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIChwZXJoYXBzIG9mZmxvYWRpbmcgbWVzc2FnZSBwcm9jZXNzaW5nKT8gRG9lcyBpdCBlbmFibGUgc3BlY2lmaWMgd2lyZWxlc3MgZmVhdHVyZXMgbGlrZSBoYXJkd2FyZSBvZmZsb2FkLCBvciBpcyBpdCBtb3JlIG9mIGFuIGludGVybmFsIGRyaXZlciBvcHRpbWl6YXRpb24gZm9yIGEgcGFydGljdWxhciBoYXJkd2FyZSBnZW5lcmF0aW9uPyBJJ2xsIHByb2JhYmx5IGhhdmUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoZSByZWxldmFudCBjb2RlIHdpdGggdGhlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gb3IgYSBkYXRhc2hlZXQsIGlmIGl0J3MgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NTcuNzM2MDg3MTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjY2NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xMT1jb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTE6NTcuODg1NzU3ODgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4MzAyNzE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBIZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwcm92aWRlZCB0ZXh0IGFzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgbXkgdGhvdWdodCBwcm9jZXNzLCBhbmQgYXNzdW1pbmcgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbiBoZXJlLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCB0aGUgcHJvY2VzcyBpcyB0cnlpbmcgdG8gc2VsZWN0LiBJcyBpdCBhIHNwZWNpZmljIGVsZW1lbnQsIGEgZGF0YSBwb2ludCwgYW4gYWxnb3JpdGhtPyBXaGF0IGFyZSB0aGUgaW5oZXJlbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHdoYXRldmVyJ3MgYmVpbmcgc2VsZWN0ZWQ/IFVuZGVyc3RhbmRpbmcgdGhlICppbnB1dHMqIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gdGhpbmsgYWJvdXQgdGhlIHNlbGVjdGlvbiBtZWNoYW5pc20gaXRzZWxmLiBJcyBpdCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQsIGEgY29tcGxleCB3ZWlnaHRpbmcgc3lzdGVtLCBvciBzb21ldGhpbmcgbW9yZSBhZHZhbmNlZCBsaWtlIGEgbWFjaGluZSBsZWFybmluZyBtb2RlbCBhdCBwbGF5PyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLiBNeSBleHBlcmllbmNlIGRpY3RhdGVzIHRoYXQgSSBtdXN0IGxvb2sgY2xvc2VseSBhdCB0aGUgZGF0YS4gSSd2ZSBzZWVuIGl0IGFsbCwgYW5kIGtub3cgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MDAuODY4Nzg3NjE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE3MDczOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJSQ01GTUFDX1BST1RPX01TR0JVRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTQwPWNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0OlxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00NS1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjAxLjAxMDUwMTMyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjE1NDcwMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgQlJDTUZNQUMqKlxuXG5Pa2F5LCBzbyBgQlJDTUZNQUNfUENJRWAgc2VsZWN0cyBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogYEJSQ01GTUFDX1BDSUVgPyBUaGUgYW5zd2VyIGhpbmdlcyBvbiBQQ0ksIG5hdHVyYWxseS4gQW5kLCBjYW4gd2UgZnV6eiBQQ0kgZGV2aWNlcyB3aXRoaW4gUUVNVT8gR2VuZXJhbGx5LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enoganVzdCAqYW55KiBQQ0kgZGV2aWNlIHVubGVzcyB0aGVyZSdzIHNwZWNpZmljIHN1cHBvcnQgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9yZSBnZW5lcmljIFBDSSBmdXp6aW5nIG1lY2hhbmlzbS4gQWgsIGJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHZmaW8vcGNpYC5cblxuTm93LCB0aGUgcHJvbXB0IGJyaW5ncyB1cCBhIGNyaXRpY2FsIGNhdmVhdDogY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIGxpa2UgdGhvc2UgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFyZSBleGNsdWRlZC4gSXMgYGJyY21mbWFjYCBvbmUgb2YgdGhvc2U/IEl0J3MgYSBCcm9hZGNvbSBGdWxsTUFDIHdpcmVsZXNzIGRyaXZlciwgc28sIGl0J3MgZGVmaW5pdGVseSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKmxpa2UqIHRob3NlIGV4Y2x1ZGVkIHR5cGVzP1xuXG5Ib2xkIG9uLi4uIEknbSBzZWVpbmcgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIFRoYXQgbWVhbnMgc3l6a2FsbGVyICpmb3VuZCogdGhpcyBidWcsIGFuZCB0aGlzIGlzIGEgcGF0Y2ghIFRoYXQncyBhIGdvb2Qgc2lnbi4gSSBrbm93IHN5emthbGxlciBoYXMgVVNCIGFuZCBQQ0kgZnV6emVycy4gSSBzaG91bGQgY2hlY2sgaWYgYGJyY21mbWFjYCBpcyBhY3R1YWxseSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgUENJIGZ1enplciBpbiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgaXQgKmRvZXMqIGZ1enogUENJIGRldmljZXMgdXNpbmcgYSB2aXJ0dWFsIFBDSSBicmlkZ2Ugb3IgYSBzaW1pbGFyIG1lY2hhbmlzbS4gVGhlbiBJJ20gcmVtaW5kZWQgb2YgdGhlIHByb21wdCdzIGNvbmRpdGlvbjogcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHdoaWNoIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbklzIGBicmNtZm1hY2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gTm8sIGl0J3MgYSBXaS1GaSBkcml2ZXIsIHNvIGl0J3Mgbm90IGFueSBvZiB0aG9zZS4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGUgZmFjdCB0aGF0IHN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudC4gT2theSwgSSBuZWVkIHRvIHZlcmlmeSBpZiBgYnJjbWZtYWNgIGlzIHJlYWNoYWJsZSwgdGhlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyOCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjowOC42MjU5NzM2NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTE0NjQ2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcGNpZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNDM5OmJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjU2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNjkwOlxcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjkxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3NjI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJyY21mX3BjaWVkcnZyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY0LVxcdC5pZF90YWJsZSA9IGJyY21mX3BjaWVfZGV2aWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzY1OlxcdC5wcm9iZSA9IGJyY21mX3BjaWVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzY2LVxcdC5yZW1vdmUgPSBicmNtZl9wY2llX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MDkuNzc3NDQzMjc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDk0MjY1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGJyY21mbWFjJ3MgUENJIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGJyY21mbWFjYCB0b2RheS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBvbiBteSBtaW5kOiBpcyB0aGlzIGRyaXZlciAqZXhjbHVzaXZlbHkqIHRpZWQgdG8gUENJLCBvciBkb2VzIGl0IHN1cHBvcnQgb3RoZXIgaW50ZXJmYWNlcywgdG9vPyBLbm93aW5nIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcG9ydGFiaWxpdHksIGl0cyBwb3RlbnRpYWwgYXBwbGljYXRpb24gaW4gZGlmZmVyZW50IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBhbmQsIHF1aXRlIGZyYW5rbHksIHdoZXJlIEkgY2FuIG1ha2UgdGhlIG1vc3QgaW1wYWN0IHdpdGggYW55IG1vZGlmaWNhdGlvbnMgSSBtaWdodCBjb25zaWRlci4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgUENJIGRlcGVuZGVuY2UgcmlnaHQgbm93LCBhcyB0aGF0IGltcGFjdHMgYW55IG9mIG15IG90aGVyIGludmVzdGlnYXRpb25zLiBJIG5lZWQgdG8ga25vdyBob3cgZGVlcCB0aGlzIHJhYmJpdCBob2xlIGdvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoxMi43MjY4NzI0NzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTIyNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MTIuNzkwNDAwNzFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMzIzMTM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZtYWMncyBUcmFuc3BvcnQgUHJvdG9jb2wgT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgbXkgbWVudGFsIG1hcCBvZiB0aGUgYGJyY21mbWFjYCBkcml2ZXIncyBhcmNoaXRlY3R1cmUgdGVsbHMgbWUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBTRElPLCBVU0IsIGFuZCBQQ0lFLiBOYXR1cmFsbHksIHdoZW4gYnVpbGRpbmcgYSBkcml2ZXIgd2l0aCB0aGVzZSBkaXZlcnNlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZXMsIHRoZSBwcm90b2NvbCBkZXRhaWxzIGdldCBhIGJpdCBtb3JlIGNvbXBsZXguIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgbXNnYnVmLmNgIGNvbXBvbmVudC4gSSBrbm93IHRoYXQgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIHdoZW4gYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgaXMgZGVmaW5lZC4gVGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHBvaW50cyB0byBgQlJDTUZNQUNfUENJRWAgYXMgdGhlIHRyaWdnZXIgZm9yIHRoYXQgY29tcGlsYXRpb24gcGF0aC4gTXkgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIFVTQiB0cmFuc3BvcnQgYWxzbyB1c2VzIHRoZSBgQlJDTUZNQUNfUFJPVE9fTVNHQlVGYCBwcm90b2NvbC4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBkZXBlbmRlbmN5IG9yIGEgYnVpbGQgZmxhZy4gSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgbWVzc2FnZSBidWZmZXIgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBpbiBhIGNvbnNpc3RlbnQgZmFzaGlvbiBhY3Jvc3MgYWxsIHRoZSB0cmFuc3BvcnQgbWVkaXVtcy4gSSBuZWVkIHRvIGJlIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgdG8gZXZhbHVhdGUgdGhlIGRyaXZlciBhcmNoaXRlY3R1cmUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTEzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MTYuNjEzNjM0NDY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY5NjA1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJSQ01GTUFDX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9MTc9Y29uZmlnIEJSQ01GTUFDX1NESU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTIwLVxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyMTpcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTIyLVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTI5PWNvbmZpZyBCUkNNRk1BQ19VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMyLVxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzozMzpcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM0LVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTQwPWNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQ0OlxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00NS1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjE2Ljc5MDYwMTAyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTYzMjg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlJDTUZNQUMgQnVnIEZvdW5kIGJ5IFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYnVnIHJlcG9ydCwgYW5kIGl0IHNlZW1zIHRoaXMgYEJSQ01GTUFDX1BST1RPX01TR0JVRmAgY29kZSBwYXRoIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgYEJSQ01GTUFDX1BDSUVgIG9wdGlvbiBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucyB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBQQ0llIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkcml2ZXIuIE5vdywgdGhlIG9idmlvdXMgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcyBlZmZlY3RpdmVseT8gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIGJ1dCBpcyBpdCBzb3BoaXN0aWNhdGVkIGVub3VnaCB0byBoYW5kbGUgdGhpcyBzcGVjaWZpYyBgYnJjbWZtYWNgIFBDSWUgZHJpdmVyLCBvciBpcyBpdCBqdXN0IGxpbWl0ZWQgdG8gZ2VuZXJpYyBQQ0kgZGV2aWNlIGZ1enppbmc/XG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIHJlcG9ydCAqaXMqIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gU28sIGl0ICpkaWQqIGZpbmQgc29tZXRoaW5nISBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgU3l6a2FsbGVyIGhhcyBhIHZmaW8tYmFzZWQgUENJIGZ1enplciwgd2hpY2ggY2FuIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0IG9wZW5zIHVwIGEgbXVjaCB3aWRlciBhdHRhY2sgc3VyZmFjZSBhbmQgbWVhbnMgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHdpdGhpbiBTeXprYWxsZXIncyBzZXR1cC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIGluIHRoZSBjb21taXQuIEl0IGxvb2tzIGxpa2UgaXQgaW52b2x2ZXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLiBOb3csIGxldCdzIHRoaW5rIGFib3V0IHRoZWlyIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmcmVxdWVuY3kgb2YgZXhlY3V0aW9uLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLi4uIHRoYXQgc291bmRzIGxpa2UgYSBob3QtcGF0aCBmdW5jdGlvbiwgcHJvY2Vzc2luZyBUWCBzdGF0dXMgdXBkYXRlcy4gVGhlIG90aGVyIHR3bywgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAsIHRob3NlIGFyZSBjb250cm9sLXBhdGggZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZmxvdyByaW5nIG1hbmFnZW1lbnQuIEhtbSwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1MSwiT3V0cHV0VG9rZW5zIjo1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyMi42ODY5MzI0M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MTE3OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI2MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjYxOmJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMzgtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX0ZMT1dfUklOR19DUkVBVEVfQ01QTFRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM5OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2UobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQwLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyMi45MjQwNTYxODhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODQ5MTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCwgYXNzdW1pbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0J3MgdGhlIGhlYXJ0IG9mIGhvdyBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUgYW5kIHJvdXRpbmcgdGhlbSBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtZXNzYWdlIHR5cGVzIGl0J3MgZGVhbGluZyB3aXRoIGFuZCBob3cgdGhhdCBkaXNwYXRjaGluZyBsb2dpYyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBhIHNpbXBsZSBzd2l0Y2ggc3RhdGVtZW50LCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IGFuZCBkYXRhLWRyaXZlbj9cIiBBIHNpbXBsZSBzd2l0Y2ggaXMgZWFzaWVyIHRvIGZvbGxvdyBidXQgbGVzcyBmbGV4aWJsZS4gQSBtb3JlIHNvcGhpc3RpY2F0ZWQgbWV0aG9kLCBwZXJoYXBzIHVzaW5nIGEgZnVuY3Rpb24gcG9pbnRlciB0YWJsZSBvciBhIG1lc3NhZ2Utc3BlY2lmaWMgaGFuZGxlciByZWdpc3RyeSwgd291bGQgbGlrZWx5IGJlIG1vcmUgZXh0ZW5zaWJsZS4gSSBhbHNvIHdhbnQgdG8gc2VlIHRoZSBlcnJvciBoYW5kbGluZy4gRG9lcyBpdCBncmFjZWZ1bGx5IGhhbmRsZSB1bmtub3duIG9yIGNvcnJ1cHRlZCBtZXNzYWdlIHR5cGVzPyBEb2VzIGl0IGxvZyBlcnJvcnMgaW4gYSB3YXkgdGhhdCdzIGFjdHVhbGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nPyBJJ20gaG9waW5nIHRvIHNlZSBhIGdvb2QgYmFsYW5jZSBvZiBlZmZpY2llbmN5IGFuZCByb2J1c3RuZXNzIGhlcmUuIExldCdzIHNlZSBob3cgdGhleSBkZXNpZ25lZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyNi4yNTI1NTE0ODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzgwODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI5Mz1icmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIyOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzNzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODQtXFx0d2hpbGUgKGNvdW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzODU6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODYtXFx0XFx0XFx0XFx0XFx0ICAgICBidWYgKyBtc2didWYtXFx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjoyNi4zMTYzMzczM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3Njg0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBvZiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCdzIGNsZWFyIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGluY29taW5nIG1lc3NhZ2VzLiBUaGUga2V5IHRoaW5nIHRvIHVuZGVyc3RhbmQgaW1tZWRpYXRlbHkgaXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQ6IGBicmNtZl9tc2didWZfcnhidWZgLiBUaGF0IG1lYW5zIGByeGJ1ZmAgaXMgdGhlIGluY29taW5nIGRhdGEgYnVmZmVyIGFuZCBpdCdzIGFjdGluZyBhcyB0aGUgaW5wdXQgdHJpZ2dlciBmb3IgdGhpcyBzcGVjaWZpYyBwcm9jZXNzaW5nIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGtleSBhcmNoaXRlY3R1cmFsIGNoYXJhY3RlcmlzdGljIHRvIHN0YXJ0IGFuYWx5emluZy4gVGhpcyBpbmRpY2F0ZXMgYSBkYXRhLWRyaXZlbiBtb2RlbCB3aGVyZSB0aGUgcmVjZWlwdCBvZiBhIG5ldyBtZXNzYWdlIGZyb20gdGhlIHJlY2VpdmUgYnVmZmVyIGtpY2tzIG9mZiB0aGUgcHJpbWFyeSBoYW5kbGluZy4gSSdkIG5lZWQgdG8gdHJhY2UgYGJyY21mX21zZ2J1Zl9yeGJ1ZmAgdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGNvbWluZyBmcm9tIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBkYXRhIGZsb3cgaGVyZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIHN0cnVjdHVyZSB0aGF0IGByeGJ1ZmAgaXMgYW5kIHdoZXJlIGFuZCBob3cgaXRzIGZpbGxlZC4gSXQgbGlrZWx5IHNpdHMgYXMgYSBsb3dlciBsYXllciBmdW5jdGlvbiBpbiB0aGUgUlggZGF0YSBwYXRoLiBUaGUgbmV4dCBxdWVzdGlvbiBJIGhhdmUgaXMsIGRvZXMgaXQgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIGFuZCB3aGF0IGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gYW5kIGhvdyBkb2VzIGl0IGFmZmVjdCBvdGhlciBmdW5jdGlvbnM/LiBUaGF0J3MgaG93IEknbGwgYmVnaW4gdG8gZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjM0LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MzAuMTQ0MDI1OTM5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ2MDc5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfbXNnYnVmX3J4YnVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTI4NT1zdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyOTI6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04Nzk9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODkzLVxcdFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTQ6XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg5NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9ODk5PWJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTMxOnN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMDA5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMTA6YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwMTctXFx0d2hpbGUgKGZpbGxidWZzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMTg6XFx0XFx0cmV0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KG1zZ2J1ZiwgZmlsbGJ1ZnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDE5LVxcdFxcdGlmICghcmV0Y291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTAyOD1icmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDMyLVxcdFxcdFxcdFxcdCAgQlJDTUZfTVNHQlVGX1JYQlVGUE9TVF9USFJFU0hPTEQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDMzOlxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTAzNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTAzNz1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwMzg6YnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDM5LVxcdFxcdFxcdCAgICAgdTMyIGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMTE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTExNS1cXHRjb3VudCA9IG1zZ2J1Zi1cXHUwMDNlbWF4X2lvY3RscmVzcGJ1ZiAtIG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTExNjpcXHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCBmYWxzZSwgY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTE3LVxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZiArPSBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTIxOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEyNS1cXHRjb3VudCA9IG1zZ2J1Zi1cXHUwMDNlbWF4X2V2ZW50YnVmIC0gbXNnYnVmLVxcdTAwM2VjdXJfZXZlbnRidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExMjY6XFx0Y291bnQgPSBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KG1zZ2J1ZiwgdHJ1ZSwgY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTI3LVxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExMzE9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE0NS1cXHRcXHRtc2didWYtXFx1MDAzZWN1cl9ldmVudGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTQ2OlxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTU2MT1pbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NTUtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjU2OlxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY1Ny1cXHRcXHRpZiAobXNnYnVmLVxcdTAwM2VtYXhfcnhidWZwb3N0ICE9IG1zZ2J1Zi1cXHUwMDNlcnhidWZwb3N0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NjItXFx0fSB3aGlsZSAoY291bnQgXFx1MDAzYyAxMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NjM6XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3QobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY2NDpcXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6MzAuMzE4NjQwODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0NzQyNzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBhcyBhbiBleHBlcmllbmNlZCBlbmdpbmVlcjpcblxuKipBbmFseXppbmcgTWVzc2FnZSBCdWZmZXIgUHJvY2Vzc2luZyBpbiB0aGUgYnJjbWYgRHJpdmVyKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHNvbWUgbW9kaWZpY2F0aW9ucywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBzZWVtIGZvY3VzZWQgb24gdGhlc2UgZnVuY3Rpb25zOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIFRoZXNlIGFyZSBhbGwgcHJvY2Vzc2luZyBtZXNzYWdlcyBvciBoYW5kbGluZyByZXNwb25zZXMgcmVsYXRlZCB0byB0cmFuc21pdCBzdGF0dXMgb3IgZmxvdyByaW5nIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICpjb250ZXh0KiBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5JIHNlZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGNhbGxlZCBmcm9tIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGlzIGxpa2VseSBhIGRpc3BhdGNoZXIgdGhhdCByb3V0ZXMgbWVzc2FnZXMgYmFzZWQgb24gdGhlaXIgdHlwZS4gVGhlbiBJIHNlZSB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4gQWgtaGEsIHRoYXQncyB3aGVyZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBmcm9tIHRoZSBQQ0lFIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIG9yIGEgdGFza2xldC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggaW50ZXJydXB0IHByb2Nlc3NpbmcsIG9yIGRlZmVycmVkIGludGVycnVwdCBwcm9jZXNzaW5nLCB3aGljaCBpcyB2ZXJ5IGNvbW1vbiBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQuIFRoaXMgYWxzbyBnaXZlcyBhIGhpbnQgYXMgdG8gdGhlIHRpbWluZyBhbmQgY29uY3VycmVuY3kgY29uc3RyYWludHMgdGhhdCBhcmUgaW4gcGxheS5cblxuTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBvdGhlciBjYWxsZXJzIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgbmV3IGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCwgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIGlzc3Vlcy4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMSwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MjozNC44NjYwNzA3NjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTk5ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTExNzQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE3NTpicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjEtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1JYX0NNUExUXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2MjpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM3MTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MDM9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDEzLVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfUlhfQ09NUExFVEVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDE0OlxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxNS1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNjpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTctXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19DT05UUk9MX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxODpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM0LjkyNjI3NjY1OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMwODQ1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIGNsZWFybHkgdGhlIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgZW50cnkgcG9pbnQsIGlmIHlvdSB3aWxsLiBUaGUgZmxvdyBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLCBhbmQgdGhpcyBpcyBpdCBmb3IgdGhlIG1lc3NhZ2UgYnVmZmVyIHJlY2VpdmUuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIHRoZSB1cHN0cmVhbSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gdGhpcyBmdW5jdGlvbiBnZXR0aW5nIGludm9rZWQuIEknbSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCBhIHJlYWwgZ3Jhc3Agb2YgaG93IGRhdGEgZmxvd3MgaW50byB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMgdGVsbCB1cy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQxMCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM4LjI1NzEyNTUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExMjgzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTM3MT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQwMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTMyLXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXFx0XFx0XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo5NTY6XFx0XFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmRldmluZm8tXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjM4LjMxODI2MDMwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTcwNjA1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgdGFyZ2V0IGhlcmUsIHN0YXJ0aW5nIHdpdGggYGJyY21mX3BjaWVfaXNyX3RocmVhZGAuIFRoYXQncyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBQQ0lFIGRldmljZSwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIHByb2JlZCBhbmQgaW50ZXJydXB0cyBhcmUgb2NjdXJyaW5nIOKAkyBhIGdvb2Qgc2lnbiEgQW5kIHllcywgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGEgbmV0d29yayBkcml2ZXIuIFNvLCBpcyBmdXp6aW5nIHdhcnJhbnRlZD8gQWJzb2x1dGVseS5cblxuSW5pdGlhbGx5LCBJIHplcm9lZCBpbiBvbiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgc3RyZXNzZXMgdGhlIGltcG9ydGFuY2Ugb2Ygbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIOKAkyBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGNhbiBiZSBpbmxpbmVkIGFuZCBkb24ndCBvZmZlciBkaXN0aW5jdCBzeW1ib2xzIGZvciB1cyB0byB0YXJnZXQuIFdhaXQgYSBtaW51dGUsIGFsbCB0aG9zZSBmdW5jdGlvbnMgKmFyZSogc3RhdGljLlxuXG5UaGUgYWN0dWFsIGVudHJ5cG9pbnQgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBJIG5lZWQgdG8gY29uZmlybSBpdCdzIG5vbi1zdGF0aWMsIGFuZCB0aGFua2Z1bGx5LCBpdCBpcy4gTG9va3MgbGlrZSB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW50ZXJlc3QuXG5cbk5vdywgY2hlY2tpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIGBCUkNNRk1BQ2AsIGBCUkNNRk1BQ19QQ0lFYCwgYW5kIGBCUkNNRk1BQ19QUk9UT19NU0dCVUZgICh3aGljaCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGJ5IGBCUkNNRk1BQ19QQ0lFYCkuIExldCdzIGp1c3QgbWFrZSBzdXJlIHRob3NlIGRlcGVuZGVuY2llcyBmb3IgYEJSQ01GTUFDX1BDSUVgIGFyZSBhbGwgc2F0aXNmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI0MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo0NC40ODg4Njg4MDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODI2NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19QQ0lFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9Mjk9Y29uZmlnIEJSQ01GTUFDX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjQ0LjU0ODcwMDYzNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0NDQxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUkNNRk1BQyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBicmNtZm1hY2AgbW9kdWxlLCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2AgZmlsZS4gSSdsbCBmb2N1cyBvbiBhcm91bmQgbGluZSA0MCB0byBzZWUgd2hhdCB0aGUgaW5pdGlhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQgdGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IHRvIHNlZSBob3cgdGhlIG1vZHVsZSBpcyBzdHJ1Y3R1cmVkIGFuZCBob3cgaXQncyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCdzIHRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE3NiwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUyOjQ3Ljc3MzE0NjM3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAzNzpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAzODpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG4gIDQxOlxcdFxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NDpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuICA0NTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0NjpcXHRcXHRoZWxwXFxuICA0NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgNDg6XFx0XFx0ICBJRUVFODAyLjExYWMgZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cXG4gIDQ5OlxcdFxcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFBDSUUgd2lyZWxlc3MgY2FyZC5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo0Ny43NzMyMTI3MTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NjAwNTY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBCUkNNRk1BQyBhbmQgQlJDTUZNQUNfUENJRSBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19QQ0lFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbXBhcmUgYW5kIGNvbnRyYXN0IHRoZW0uIEhhbmcgb24sIHRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHBvdGVudGlhbCBkZXBlbmRlbmN5LiBJcyBgQlJDTUZNQUNgIGEgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYEJSQ01GTUFDX1BDSUVgIGJ1aWxkcyB1cG9uLCBvciBpcyB0aGVyZSBhbm90aGVyIHJlbGF0aW9uc2hpcCBpbiBwbGF5PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYEJSQ01GTUFDYCBoYXMgcHJlcmVxdWlzaXRlcyBvciBpZiBpdCByZWxpZXMgb24gb3RoZXIgbW9kdWxlcyB0byBmdW5jdGlvbi4gVGhpcyBjb3VsZCBpbXBhY3QgaG93IEkgYXBwcm9hY2ggaW50ZWdyYXRpb24gYW5kIGhvdyBhbnkgbW9kaWZpY2F0aW9ucyBjYXNjYWRlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Njg4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1MC44NjkyMjA1OTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgQlJDTUZNQUNcXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJSQ01VVElMXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cXG4gICA3OlxcdFxcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xcbiAgIDg6XFx0XFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkXFxuICAgOTpcXHRcXHQgIGJyY21mbWFjLmtvLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMTI6XFx0XFx0Ym9vbFxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBCUkNNRk1BQ19TRElPXFxuICAxODpcXHRcXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIChNTUMgPSB5IHx8IE1NQyA9IEJSQ01GTUFDKVxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1MC44NjkyODM5MzJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMzI2ODU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlJDTUZNQUMgTW9kdWxlIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQlJDTUZNQUNgIG1vZHVsZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBUaGF0J3Mgbm90IHN1cnByaXNpbmc7IGl0J3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIFNvLCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBDRkc4MDIxMWAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LCBhbmQgdGhlbiBhbHNvIGBCUkNNRk1BQ2AgaXRzZWxmLCBhbG9uZyB3aXRoIGBCUkNNRk1BQ19QQ0lFYCBzaW5jZSBpdCBtaWdodCBiZSBQQ0ktc3BlY2lmaWMuXG5cbkhvbGQgb24gYSBzZWMuLi4gYEJSQ01GTUFDX1BDSUVgIGRlcGVuZHMgb24gYFBDSWAuIE9rYXksICp0aGF0KiBkZXBlbmRlbmN5IGlzIGFsbW9zdCBhbHdheXMgc2F0aXNmaWVkOyBQQ0kncyB1c3VhbGx5IGJha2VkIGluIHRvIHRoZSBzeXN0ZW0uIFN0aWxsLCB3b3J0aCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBzdXJlIG5vdGhpbmcncyBiZWVuIGluYWR2ZXJ0ZW50bHkgZGlzYWJsZWQuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJlYWxseSBsb29rIGludG8gaG93IHRoZXNlIG1lc3NhZ2UgYnVmZmVycyBhcmUgaGFuZGxlZC4gTGV0IG1lIHRha2UgYSBsb29rIGF0IGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgd2l0aGluIHRoZSBgYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jYCBkcml2ZXIgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbW9kdWxlIGFjdHVhbGx5IGhhbmRsZXMgaW5jb21pbmcgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyMTQsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1NC44ODI1NTQ4MTFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDAwOlxcdH1cXG4xNDAxOlxcdFxcbjE0MDI6XFx0XFxuMTQwMzpcXHRpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbjE0MDQ6XFx0e1xcbjE0MDU6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuMTQwNjpcXHRcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVxcdTAwM2VkcnZyO1xcbjE0MDc6XFx0XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuMTQwODpcXHRcXHRzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZztcXG4xNDA5OlxcdFxcdHZvaWQgKmJ1ZjtcXG4xNDEwOlxcdFxcdHUzMiBmbG93aWQ7XFxuMTQxMTpcXHRcXHRpbnQgcWxlbjtcXG4xNDEyOlxcdFxcbjE0MTM6XFx0XFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19SWF9DT01QTEVURV07XFxuMTQxNDpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuMTQxNTpcXHRcXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1RYX0NPTVBMRVRFXTtcXG4xNDE2OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcXG4xNDE3OlxcdFxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuMTQxODpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuMTQxOTpcXHRcXG4xNDIwOlxcdFxcdGZvcl9lYWNoX3NldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwLFxcbjE0MjE6XFx0XFx0XFx0XFx0IG1zZ2J1Zi1cXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xcbjE0MjI6XFx0XFx0XFx0Y2xlYXJfYml0KGZsb3dpZCwgbXNnYnVmLVxcdTAwM2V0eHN0YXR1c19kb25lX21hcCk7XFxuMTQyMzpcXHRcXHRcXHRjb21tb25yaW5nID0gbXNnYnVmLVxcdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcXG4xNDI0OlxcdFxcdFxcdHFsZW4gPSBicmNtZl9mbG93cmluZ19xbGVuKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTI6NTQuODgyODI2NzQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzU5NzkzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNU0dCVUYgUmluZyBQcm9jZXNzaW5nKipcblxuT2theSwgc28gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyB0aGUgY29yZSBlbnRyeSBwb2ludCwgdGhlIHByaW1hcnkgZnVuY3Rpb24gaW5pdGlhdGluZyB0aGUgcHJvY2Vzc2luZyBvZiBNU0dCVUYgcmluZ3MuIE5vIHF1ZXN0aW9uIHRoZXJlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRob3VnaDsgYXJlIHRoZXJlIGFueSAqb3RoZXIqIHBvc3NpYmxlIGVudHJ5IHBvaW50cyBJJ20gb3Zlcmxvb2tpbmc/XG5cbkxldCdzIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AgYmFjay4gSXQncyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBBbmQgZmluYWxseSwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCBvcmlnaW5hdGVzIGZyb20gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC5cblxuQWgsIHRoZXJlJ3MgdGhlIGNvbmZpcm1hdGlvbi4gVGhlIGNhbGwgc3RhY2sgbWFrZXMgaXQgY2xlYXIuIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgYWN0cyBhcyB0aGUgcm9vdCwgaXQncyB0aGUgcGVyZmVjdCBmdW5jdGlvbiB0byB0YXJnZXQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHdheSB0byByZWFjaCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLiBKdXN0IHdhbnQgdG8gcnVsZSBvdXQgYW55IHN1YnRsZSBhbHRlcm5hdGl2ZSBwYXRocyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNDIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1OS4xMTg4MDk2MThaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjQ0NzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg5OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTk6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMyMj1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTctXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1RYX1NUQVRVU1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1Mjo1OS4xNzgwNTk5MzVaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MTE5NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZm9jdXNpbmcgb24gdGhlIGNvcmUgY29uY2VwdDpcblxuKipOYXJyb3dpbmcgdGhlIEZvY3VzOiBUaGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIEZ1bmN0aW9uKipcblxuTXkgbWluZCBpcyBsYXNlci1mb2N1c2VkIHJpZ2h0IG5vdy4gSSdtIGRyaWxsaW5nIGRvd24gdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLiBUaGF0J3Mgd2hlcmUgdGhlIGNyaXRpY2FsIHByb2Nlc3NpbmcgaXMgaGFwcGVuaW5nLCBhbmQgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzLiBObyBkaXN0cmFjdGlvbnMsIG5vIGV4dHJhbmVvdXMgY29udGV4dCwganVzdCB0aGlzIGZ1bmN0aW9uLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIHRoZSBwaXZvdGFsIHBvaW50IGluIHRoaXMgd2hvbGUgc3lzdGVtLCB0aGUgbGlrZWx5IGZ1bGNydW0gb2YgdGhlIGVudGlyZSBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MsIGFuZCB3aGF0IGhhcyBkcmF3biBteSBpbW1lZGlhdGUgYXR0ZW50aW9uLiBBbGwgb3RoZXIgY29uc2lkZXJhdGlvbnMgY2FuIHdhaXQ7IHRoZSBpbXBsaWNhdGlvbnMgb2YgaG93IHRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIG1lc3NhZ2UgdHlwZXMsIGFyZSBwYXJhbW91bnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTUwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MDIuNDE5MjU4NzM1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQzNzY3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyOTM9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTMyMjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzcxPXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg0LVxcdHdoaWxlIChjb3VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzg1OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUobXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzg2LVxcdFxcdFxcdFxcdFxcdCAgICAgYnVmICsgbXNnYnVmLVxcdTAwM2VyeF9kYXRhb2Zmc2V0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MDIuNDc4NzAxNDEyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDk4Mzg4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIHNvbGVseSBvbiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgOlxuXG4qKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAqKlxuXG5Pa2F5LCBzbyB0aGUgdGhvdWdodCB0cmFpbiBoYXMgbmFycm93ZWQgZG93biB0byBqdXN0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIEl0IHRlbGxzIG1lIHRoYXQgdGhlIGZvY3VzIGlzICpleGNsdXNpdmVseSogb24gaGFuZGxpbmcgcmVjZWl2ZWQgbWVzc2FnZXMgd2l0aGluIHRoZSBCcm9hZGNvbSBXaS1GaSBkcml2ZXIsIGxpa2VseSBvbiB0aGUgcmVjZWl2ZXIgc2lkZSBvZiB0aGUgY29tbXVuaWNhdGlvbi4gTm90aGluZyBlbHNlIGlzIHVuZGVyIGNvbnNpZGVyYXRpb24gcmlnaHQgbm93IOKAkyBubyB0cmFuc21pdCBwYXRocywgaW5pdGlhbGl6YXRpb24sIG9yIGVycm9yIGhhbmRsaW5nIGJleW9uZCB3aGF0J3MgaW50cmluc2ljIHRvIHRoZSByZWNlaXZlIHByb2Nlc3MuXG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZldyBrZXkgcXVlc3Rpb25zLiBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgYmVpbmcgYW5hbHl6ZWQgZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhIHNwZWNpZmljIGJ1Zywgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgb3Igc2ltcGx5IGEgZ2VuZXJhbCBjb2RlIHJldmlldyByZWxhdGVkIHRvIHJlY2VpdmUgbWVzc2FnZSBwcm9jZXNzaW5nPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGZsb3dzIHRvIGFuZCBmcm9tIHRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwuIFdoYXQga2luZCBvZiBidWZmZXJpbmcgaXMgaW52b2x2ZWQsIGFuZCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIHRoaW5rIGFib3V0PyBBcmUgd2UgZGVhbGluZyB3aXRoIERNQSBvciBDUFUtZHJpdmVuIG1lc3NhZ2UgcHJvY2Vzc2luZyBoZXJlP1xuXG5TaW5jZSBpdCdzIGZvY3VzZWQgb24gYHJ4YCwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRhdGEgdmFsaWRhdGlvbiwgbWVzc2FnZSBwYXJzaW5nLCBhbmQgaG93IHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBtZXNzYWdlIGl0J3MgcmVjZWl2ZWQuIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIG1lc3NhZ2UgdHlwZSBvciB0eXBlcyB0aGF0IGFyZSBjYXVzaW5nIGNvbmNlcm4/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIG92ZXJmbG93IGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBjb21wcm9taXNlIHNlY3VyaXR5PyBUaGUgaW50cmljYWNpZXMgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIG1hbmFnZW1lbnQgYmVjb21lIHBhcmFtb3VudCDigJMgbWVtb3J5IGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGRhdGEgaXQgY29udGFpbnMuIGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAgaGFzIHRvIGJlIHdlbGwtdmV0dGVkLiBJdHMgdnVsbmVyYWJpbGl0eSBjYW4gY29tcHJvbWlzZSB0aGUgZW50aXJlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2OSwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUzOjA2LjEyODU0NDEyWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ1NTU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9SWF9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNDAzPWludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE3LVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTg6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzowNi4xODgwMDUwODZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk3Nzg1NTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIGlzIHRoZSBzb2xlIGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0J3MgY29uZmlybSBpZiBpdCdzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEV4YW1pbmluZyB0aGUgY29kZSwgaXQncyBpbmRlZWQgdGhlIGRlc2lnbmF0ZWQgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIFJYIG1lc3NhZ2VzIG9yaWdpbmF0aW5nIGZyb20gdGhlIGRldmljZS4gQ3J1Y2lhbGx5LCBpdCdzIGludm9rZWQgZGlyZWN0bHkgZnJvbSB0aGUgaW50ZXJydXB0IGhhbmRsZXIsIGFuZCBpdCdzIGFsc28gbm9uLXN0YXRpYy4gVGhvc2UgZmFjdG9ycyBwb2ludCB0byBpdHMgc2lnbmlmaWNhbmNlLiBZZXMsIGl0J3MgYSBzdHJvbmcgZm9jdXMgcG9pbnQuXG5cbk5vdywgbGV0J3MgZXN0YWJsaXNoIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgIGFzIHBvdGVudGlhbCBmbGFncy4gQWgsIGEgZGVwZW5kZW5jeSBpcyBhcHBhcmVudDogYEJSQ01GTUFDYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFdlIGtub3cgYENGRzgwMjExYCBpcyB0cmlzdGF0ZSwgYnV0IGxpa2VseSB3aWxsIGJlIHNldC4gRnVydGhlcm1vcmUsIGBCUkNNRk1BQ19QQ0lFYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEJSQ01GTUFDYCBhbmQgYFBDSWAuIFNpbmNlIGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBtb3N0IHN5c3RlbXMsIHdlIGNhbiBzYWZlbHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgYXJlIGBDRkc4MDIxMWAsIGBCUkNNRk1BQ2AsIGFuZCBgQlJDTUZNQUNfUENJRWAuXG5cbkp1c3QgdG8gZW5zdXJlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYENGRzgwMjExYCBpdHNlbGYgaGFzIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4ODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTEuMTY1ODczMTk1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODkwNTA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTEuMjI0Nzg0MTYxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTYyMTEzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENGRzgwMjExYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHJlbGllcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0IHNlZW1zIGEgYml0Li4ucmVkdW5kYW50LCBkb2Vzbid0IGl0PyBJdCdzIGJhc2ljYWxseSBhbHdheXMgZW5hYmxlZC4gVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGdvaW5nIG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnN1bHQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIGFjdHVhbCBsb2dpYzsgSSdsbCBzdGFydCBsb29raW5nIGFyb3VuZCBsaW5lIDE3LCBhbmQgc2VlIHdoYXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aG9zZSBjb21wb25lbnRzIGFyZS4gSSBoYXZlIGEgaHVuY2ggdGhlcmUncyBtb3JlIHRvIHRoaXMgdGhhbiBtZWV0cyB0aGUgZXllLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IHBvdGVudGlhbCBjb25kaXRpb25hbCBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MTQuNTgwOTk4NDk2WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIENGRzgwMjExXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjUzOjE0LjU4MTA2ODA1NloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njg3ODk5NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRlcGVuZGVuY3kgdHJlZTogYENGRzgwMjExYCBoaW5nZXMgb24gYFJGS0lMTCB8fCAhUkZLSUxMYC4gU2luY2UgYFJGS0lMTGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQsIHRoYXQgZ2l2ZXMgdXMgYSBzdGFydGluZyBwb2ludC4gQW5kIG9mIGNvdXJzZSwgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgQ0ZHODAyMTFgLCBgQlJDTUZNQUNgLCBhbmQgYEJSQ01GTUFDX1BDSUVgLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXJlIHRvIGZvY3VzIHRoZSBmdXp6aW5nLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBtaWdodCBiZSBhIGdvb2QgdGFyZ2V0LiBJdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYXRlcyB0aGUgcHJvY2Vzc2luZyBvZiBpbmNvbWluZyBSWCBtZXNzYWdlcyBmcm9tIHRoZSBkZXZpY2UsIGFuZCBjcnVjaWFsbHksIGl0IGdldHMgY2FsbGVkIGZyb20gdGhlIGludGVycnVwdCBoYW5kbGVyLiBJbXBvcnRhbnRseSwgaXQncyBub3Qgc3RhdGljLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gTGV0J3Mgc2VlLi4uIHllcCwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgZ29vZCBmaXJzdCBjYW5kaWRhdGUuXG5cbkFscmlnaHQsIGxldCdzIGV4cGxvcmUgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBzZWVtcyB0byB0b3VjaCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXNgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZWAsIGFuZCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWAuIFRoZXNlIGFsbCBmZWVkIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAuIEFuZCBmaW5hbGx5LCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIGlzIGNhbGxlZCBieSBvdXIgaW5pdGlhbCB0cmlnZ2VyLCBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBTbywgdGhlIGNhbGwgc3RhY2sgc29saWRpZmllcyB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBiZXN0IGluaXRpYWwgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuLi4gSSBzZWUgYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYCBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYC4gTm93IEknbSB3b25kZXJpbmcgaWYgKnRoYXQqIGlzIGEgYmV0dGVyIHRhcmdldD8gT2gsIGJ1dCBgYnJjbWZfcGNpZV9pc3JfdGhyZWFkYCBpcyBzdGF0aWMuLi4gc28gbm8sIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAgaXMgc3RpbGwgdGhlIHN1cGVyaW9yIGNob2ljZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgZW50cnkgcG9pbnRzIGludG8gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YC4uLiBzZWVtcyB3ZSdyZSBnb29kIHRoZXJlLiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgIG9ubHkgZ2V0cyBjYWxsZWQgZnJvbSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBFeGNlbGxlbnQuIFRoYXQgY29uZmlybXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTc2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6NTM6MjEuMjY4OTcxNTM0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk5NzQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc19yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMTc0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEzMjI9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYxLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9SWF9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzYzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNDAzPWludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQxMy1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQxNDpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MTUtXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTY6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE3LVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MTg6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzoyMS4zMzg5Nzg3N1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDk5MTcxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJyb2FkY29tIFdMQU4gRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBubyBvdGhlciBhY3RpdmUgaW52ZXN0aWdhdGlvbnMgYXQgdGhlIG1vbWVudC4gTGV0J3MgZGlnIGludG8gdGhpcyBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgIHN5bWJvbC4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBpdCdzIHRpZWQgdG8gYENGRzgwMjExYCwgYEJSQ01GTUFDYCwgYW5kIHNwZWNpZmljYWxseSBgQlJDTUZNQUNfUENJRWAsIHNvIHRoaXMgaXMgYSBQQ0llLXJlbGF0ZWQgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgaXNzdWUuXG5cblRoZSBzdW1tYXJ5IGRlc2NyaWJlcyBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBFc3NlbnRpYWxseSwgdGhleSdyZSB2YWxpZGF0aW5nIHRoZSBgZmxvd19yaW5nX2lkYCBiZWZvcmUgdXNpbmcgaXQgYXMgYW4gaW5kZXggaW50byBgbXNnYnVmLVx1MDAzZWZsb3dyaW5nc2AuIE1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIGNsYXNzaWMgYXJyYXkgYWNjZXNzIHZ1bG5lcmFiaWxpdHkuIFRoZSB2dWxuZXJhYmxlIGZ1bmN0aW9ucywgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBhbmQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2VgLCBhcmUgYWxsIHRyaWdnZXJlZCB3aGVuIHByb2Nlc3NpbmcgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlIHZpYSB0aGUgTVNHQlVGIHByb3RvY29sIOKAkyB3aGljaCBpcyBhIFBDSUUtc3BlY2lmaWMgdGhpbmcuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgYSBrZXkgcG9pbnQsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBsaWtlIHN5emthbGxlci4gVGhlIGNvZGUgY2hhbmdlIGFmZmVjdHMgY29yZSBkcml2ZXIgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gYGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyYC4gSXQncyBub24tc3RhdGljLCBkZWNsYXJlZCBpbiBgbXNnYnVmLmhgLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBnb29kIGZvY2FsIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEl0IHNlZW1zIHdlIGhhdmUgYSByZWFzb25hYmx5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODQ2LCJPdXRwdXRUb2tlbnMiOjIzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzo1MzoyNy40MzgxNTMwODFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTEzODg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19QQ0lFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19QQ0lFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpIGJ5IHZhbGlkYXRpbmcgdGhlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSB1c2luZyBpdCBhcyBhbiBpbmRleCB0byBhY2Nlc3MgYG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzYC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCwgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2VgLCBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZWApIGFyZSBjYWxsZWQgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGRldmljZSB2aWEgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgUENJRSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIHZpYSBzeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBmdXp6ZXIpIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[1] Phase: Succeeded StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 03:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 03:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2] Phase: Succeeded StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 03:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 03:54:20 +0000 UTC FinishedAt: 2026-07-26 03:54:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowc8xw8/series-workflowc8xw8-convert-artifact-726559349/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 03:54:30 +0000 UTC FinishedAt: 2026-07-26 04:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 03:54:30 +0000 UTC FinishedAt: 2026-07-26 04:41: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:*07e4c07a-43b5-46d4-90be-cdac39517225,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-workflowc8xw8/series-workflowc8xw8-convert-artifact-726559349/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": "d7a96859-6e4b-4125-a0a4-0a0721a55300", "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-workflowc8xw8/series-workflowc8xw8-build-action-1869726811/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 03:54:30 +0000 UTC FinishedAt: 2026-07-26 04:41:03 +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:*07e4c07a-43b5-46d4-90be-cdac39517225,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-workflowc8xw8/series-workflowc8xw8-convert-artifact-726559349/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": "d7a96859-6e4b-4125-a0a4-0a0721a55300", "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-workflowc8xw8/series-workflowc8xw8-build-action-1869726811/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 04:41:13 +0000 UTC FinishedAt: 2026-07-26 04:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 04:41:13 +0000 UTC FinishedAt: 2026-07-26 04:41:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 04:41:13 +0000 UTC FinishedAt: 2026-07-26 04:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 04:41:13 +0000 UTC FinishedAt: 2026-07-26 04:41:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowc8xw8/series-workflowc8xw8-convert-artifact-761670864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 04:41:36 +0000 UTC FinishedAt: 2026-07-26 04:43:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 04:41:36 +0000 UTC FinishedAt: 2026-07-26 04:43:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d7a96859-6e4b-4125-a0a4-0a0721a55300,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-workflowc8xw8/series-workflowc8xw8-build-action-1869726811/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-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 04:43:41 +0000 UTC FinishedAt: 2026-07-26 04:43:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 04:43:41 +0000 UTC FinishedAt: 2026-07-26 04:43:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 04:43:41 +0000 UTC FinishedAt: 2026-07-26 05:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 04:43:41 +0000 UTC FinishedAt: 2026-07-26 05:21: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:*07e4c07a-43b5-46d4-90be-cdac39517225,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-workflowc8xw8/series-workflowc8xw8-convert-artifact-761670864/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": "886feefa-67cf-4922-a647-45e7be0ceb02", "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-workflowc8xw8/series-workflowc8xw8-build-action-1963649612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 04:43:41 +0000 UTC FinishedAt: 2026-07-26 05:21:09 +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:*07e4c07a-43b5-46d4-90be-cdac39517225,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-workflowc8xw8/series-workflowc8xw8-convert-artifact-761670864/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": "886feefa-67cf-4922-a647-45e7be0ceb02", "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-workflowc8xw8/series-workflowc8xw8-build-action-1963649612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 05:21:19 +0000 UTC FinishedAt: 2026-07-26 05:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 05:21:19 +0000 UTC FinishedAt: 2026-07-26 05:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 05:21:19 +0000 UTC FinishedAt: 2026-07-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 05:21:19 +0000 UTC FinishedAt: 2026-07-26 05:23:25 +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:*886feefa-67cf-4922-a647-45e7be0ceb02,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-workflowc8xw8/series-workflowc8xw8-build-action-1963649612/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-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +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":["brcmf_proto_msgbuf_rx_trigger"],"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:*d7a96859-6e4b-4125-a0a4-0a0721a55300,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*886feefa-67cf-4922-a647-45e7be0ceb02,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-workflowc8xw8/series-workflowc8xw8-build-action-1869726811/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-workflowc8xw8/series-workflowc8xw8-build-action-1963649612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:23:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:23: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":["brcmf_proto_msgbuf_rx_trigger"],"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-workflowc8xw8/series-workflowc8xw8-convert-artifact-3261520329/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 05:23:34 +0000 UTC FinishedAt: 2026-07-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 05:23:44 +0000 UTC FinishedAt: 2026-07-26 05:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8xw8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["brcmf_proto_msgbuf_rx_trigger"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","BRCMFMAC","BRCMFMAC_PCIE"],"series_id":"7dc04faa-5424-45f3-9204-daede8835c57","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 05:23:44 +0000 UTC FinishedAt: 2026-07-26 05:24:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d7a96859-6e4b-4125-a0a4-0a0721a55300,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*886feefa-67cf-4922-a647-45e7be0ceb02,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-workflowc8xw8/series-workflowc8xw8-build-action-1869726811/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-workflowc8xw8/series-workflowc8xw8-build-action-1963649612/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-workflowc8xw8/series-workflowc8xw8-convert-artifact-3261520329/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,}