Name: series-workflowfpp2t Phase: Succeeded StartedAt: 2026-08-03 09:23:58 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[0] Phase: Succeeded StartedAt: 2026-08-03 09:23:58 +0000 UTC FinishedAt: 2026-08-03 09:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 09:23:58 +0000 UTC FinishedAt: 2026-08-03 09:30:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INPUT_IMS_PCU", "LEDS_CLASS", "USB_EMI26", "USB_EMI62", "USB_SERIAL_EDGEPORT", "USB_SERIAL_KEYSPAN", "USB_SERIAL_KEYSPAN_PDA", "USB_SERIAL_WHITEHEAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INPUT_IMS_PCU", "LEDS_CLASS", "USB_EMI26", "USB_EMI62", "USB_SERIAL_EDGEPORT", "USB_SERIAL_KEYSPAN", "USB_SERIAL_KEYSPAN_PDA", "USB_SERIAL_WHITEHEAT" ], "series_id": "f0f59ccd-c775-4f8d-8269-b9595eef6c5c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ezusb_fx1_ihex_firmware_download", "ezusb_fx2_ihex_firmware_download", "emi26_probe", "emi62_probe", "edge_startup", "ims_pcu_probe", "whiteheat_firmware_download", "keyspan_fake_startup", "keyspan_pda_fake_startup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lOUFVUX0lNU19QQ1UmIzM0OywKICAgICYjMzQ7TEVEU19DTEFTUyYjMzQ7LAogICAgJiMzNDtVU0JfRU1JMjYmIzM0OywKICAgICYjMzQ7VVNCX0VNSTYyJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfRURHRVBPUlQmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfS0VZU1BBTl9QREEmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9XSElURUhFQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlbWkyNl9wcm9iZSYjMzQ7LAogICAgJiMzNDtlbWk2Ml9wcm9iZSYjMzQ7LAogICAgJiMzNDtlZGdlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7aW1zX3BjdV9wcm9iZSYjMzQ7LAogICAgJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9mYWtlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjI1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaWhleC5oIGIvaW5jbHVkZS9saW51eC9paGV4LmhcbmluZGV4IGI4MjQ4NzdlNmQxYjYuLjRlZTRiNTk2MGY4MmYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2loZXguaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9paGV4LmhcbkBAIC0zOCw5ICYjNDM7MzgsMTMgQEAgX19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuIHN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpcbiBpaGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuIHtcbi1cdHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqbmV4dDtcbiBcbi1cdHJldHVybiBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSA/IHJlYyA6IE5VTEw7XG4mIzQzO1x0aWYgKCFiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRuZXh0ID0gX19paGV4X25leHRfYmlucmVjKHJlYyk7XG4mIzQzO1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xuIH1cbiBcbiAvKiBDaGVjayB0aGF0IGloZXhfbmV4dF9iaW5yZWMoKSB3b24mIzM5O3QgdGFrZSB1cyBvZmYgdGhlIGVuZCBvZiB0aGUgaW1hZ2UuLi4gKi9cbkBAIC00OCw2ICYjNDM7NTIsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGloZXhfYmlucmVjICplbmQsICpyZWM7XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqZW5kKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdHJlYyA9IChjb25zdCB2b2lkICopZnctXHUwMDNlZGF0YTtcbiBcdGVuZCA9IChjb25zdCB2b2lkICopXHUwMDI2ZnctXHUwMDNlZGF0YVtmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCplbmQpXTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5QVVRfSU1TX1BDVSYjMzQ7LAogICAgJiMzNDtMRURTX0NMQVNTJiMzNDssCiAgICAmIzM0O1VTQl9FTUkyNiYjMzQ7LAogICAgJiMzNDtVU0JfRU1JNjImIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX0tFWVNQQU4mIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOX1BEQSYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2VtaTI2X3Byb2JlJiMzNDssCiAgICAmIzM0O2VtaTYyX3Byb2JlJiMzNDssCiAgICAmIzM0O2VkZ2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDssCiAgICAmIzM0O3doaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX2Zha2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjZmOTZiOWQ0ZWVhYjA1MjA1MjA4MTExM2U4NjU3N2NkNmUyZmVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDk6MjU6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2loZXguaCBiL2luY2x1ZGUvbGludXgvaWhleC5oCmluZGV4IGI4MjQ4NzdlNmQxYjYuLjRlZTRiNTk2MGY4MmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaWhleC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaWhleC5oCkBAIC0zOCw5ICYjNDM7MzgsMTMgQEAgX19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKQogc3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKgogaWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYykKIHsKLQlyZWMgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTsKJiM0MzsJY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpuZXh0OwogCi0JcmV0dXJuIGJlMTZfdG9fY3B1KHJlYy0mZ3Q7bGVuKSA/IHJlYyA6IE5VTEw7CiYjNDM7CWlmICghYmUxNl90b19jcHUocmVjLSZndDtsZW4pKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CW5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTsKJiM0MzsJcmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtJmd0O2xlbikgPyBuZXh0IDogTlVMTDsKIH0KIAogLyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJiMzOTt0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovCkBAIC00OCw2ICYjNDM7NTIsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpCiB7CiAJY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICplbmQsICpyZWM7CiAKJiM0MzsJaWYgKGZ3LSZndDtzaXplICZsdDsgc2l6ZW9mKCplbmQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcmVjID0gKGNvbnN0IHZvaWQgKilmdy0mZ3Q7ZGF0YTsKIAllbmQgPSAoY29uc3Qgdm9pZCAqKSZhbXA7ZnctJmd0O2RhdGFbZnctJmd0O3NpemUgLSBzaXplb2YoKmVuZCldOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJSEVYIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW5jbHVkZS9saW51eC9paGV4LmhgLCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgdHdvIGZ1bmN0aW9uczogYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgaWhleF9uZXh0X2JpbnJlY2AgaGFzIGhhZCBhIHNhZmV0eSBjaGVjayBhZGRlZC4gQmVmb3JlIGNhbGxpbmcgYF9faWhleF9uZXh0X2JpbnJlYyhyZWMpYCwgaXQgbm93IHZlcmlmaWVzIHRoZSBsZW5ndGgsIGByZWMtJmd0O2xlbmAuIFNtYXJ0IG1vdmU7IHRoYXQgY291bGQgcHJldmVudCBzb21lIG5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgaWhleF92YWxpZGF0ZV9md2AuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBhZGRpbmcgYSBjaGVjayB0byBzZWUgaWYgdGhlIGFsbG9jYXRlZCBmaXJtd2FyZSBzaXplIChgZnctJmd0O3NpemVgKSBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGBlbmRgIHJlY29yZCBiZWZvcmUgc2V0dGluZyB0aGUgYGVuZGAgYW5kIGByZWNgIHBvaW50ZXJzLiBUaGlzIGxpa2VseSBhaW1zIHRvIGF2b2lkIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBkdXJpbmcgdGhlIHBhcnNpbmcgcHJvY2Vzcy4gSXQmIzM5O3MgYSBwcnVkZW50IGFkZGl0aW9uLCBkZWZpbml0ZWx5IG1ha2VzIHRoZSBjb2RlIG1vcmUgcm9idXN0LgoKTm93LCBteSBuZXh0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqdXNlZCo/IEkgbmVlZCB0byBzZWUgdGhlIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2Ugb2YgYm90aCBgaWhleF92YWxpZGF0ZV9md2AgYW5kIGBpaGV4X25leHRfYmlucmVjYCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZSB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGFkZHJlc3NlZCBhbmQgdGhlIG92ZXJhbGwgZWZmZWN0IG9uIHRoZSBJSEVYIHBhcnNpbmcgaW1wbGVtZW50YXRpb24uIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2loZXhfdmFsaWRhdGVfZncmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz05Njc9c3RhdGljIHZvaWQgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqX2Z3LFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTc5LVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzo5ODA6XHRlcnJvciA9IGloZXhfdmFsaWRhdGVfZncoZncpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05ODEtXHRpZiAoZXJyb3IpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2loZXguaD0zOT1paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTUwLS8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbiYjMzk7dCB0YWtlIHVzIG9mZiB0aGUgZW5kIG9mIHRoZSBpbWFnZS4uLiAqL1xuaW5jbHVkZS9saW51eC9paGV4Lmg6NTE6c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuaW5jbHVkZS9saW51eC9paGV4LmgtNTIte1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcbi0tXG5pbmNsdWRlL2xpbnV4L2loZXguaC04MC1cdFx0cmV0dXJuIHJldDtcbmluY2x1ZGUvbGludXgvaWhleC5oOjgxOlx0cmV0ID0gaWhleF92YWxpZGF0ZV9mdyhsZncpO1xuaW5jbHVkZS9saW51eC9paGV4LmgtODItXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWhleF9uZXh0X2JpbnJlYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTgxMD1zdGF0aWMgdW5zaWduZWQgaW50IGltc19wY3VfY291bnRfZndfcmVjb3Jkcyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtODE2LVx0XHRjb3VudCYjNDM7JiM0Mzs7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjgxNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTgtXHR9XG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz04Njg9c3RhdGljIGludCBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlKHN0cnVjdCBpbXNfcGN1ICpwY3UsXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjYtXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjkyNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjgtXHR9XG4tLVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9NTk3PXN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy02MjgtXHRcdG1lbWNweShmd19idWYgJiM0MzsgZndfYWRkciwgcmVjLVx1MDAzZWRhdGEsIGZ3X2xlbik7XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo2Mjk6XHRcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTYzMC1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTIyND1zdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQzLVx0fVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyNDQ6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQ1LVx0XHRsZW4gPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9NzE9c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xMTYtXHRcdFx0Z290byB3cmFwZXJyO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjExNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTExOC1cdH1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTM3LVx0XHRcdGkgJiM0Mzs9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjEzODpcdFx0XHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTM5LVx0XHR9XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE1MS1cdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE1MjpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNTMtXHRcdGVyciA9IGVtaTI2X3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVx1MDAzZWFkZHIpLFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNjgtXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE2OTpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNzAtXHRcdGlmICghSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg0LVx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzoxODU6XHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg2LVx0XHRpZiAoSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9Nzk9c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xMjMtXHRcdFx0Z290byB3cmFwZXJyO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjEyNDpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEyNS1cdH1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTQ0LVx0XHRcdGkgJiM0Mzs9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE0NTpcdFx0XHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTQ2LVx0XHR9XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE1OC1cdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE1OTpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNjAtXHRcdGVyciA9IGVtaTYyX3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVx1MDAzZWFkZHIpLFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzUtXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE3NjpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzctXHRcdGlmICghSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkxLVx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzoxOTI6XHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkzLVx0XHRpZiAoSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTc4LVx0cmVjb3JkID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWZpcm13YXJlLVx1MDAzZWRhdGE7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6Nzk6XHRmb3IgKDsgcmVjb3JkOyByZWNvcmQgPSBpaGV4X25leHRfYmlucmVjKHJlY29yZCkpIHtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy04MC1cdFx0aWYgKGJlMzJfdG9fY3B1KHJlY29yZC1cdTAwM2VhZGRyKSBcdTAwM2UgZngubWF4X2ludGVybmFsX2FkcmVzcykge1xuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy05OC1cdHJlY29yZCA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZS1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjk5Olx0Zm9yICg7IHJlY29yZDsgcmVjb3JkID0gaWhleF9uZXh0X2JpbnJlYyhyZWNvcmQpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTAwLVx0XHRpZiAoYmUzMl90b19jcHUocmVjb3JkLVx1MDAzZWFkZHIpIFx1MDAzYz0gZngubWF4X2ludGVybmFsX2FkcmVzcykge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTMxMD1zdGF0aWMgdm9pZCB1cGRhdGVfZWRnZXBvcnRfRTJQUk9NKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTM3MS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjM3MjpcdFx0Zm9yIChyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7IHJlYztcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjM3MzpcdFx0ICAgICByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTM3NC1cdFx0XHRCb290YWRkciA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0yNjI3PXN0YXRpYyB2b2lkIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmUoc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY3My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NzQ6XHRmb3IgKHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTsgcmVjO1xuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY3NTpcdCAgICAgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjc2LVx0XHRPcGVyYWRkciA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKTtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMwMC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozMDE6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zMDItXHRcdGNvbnN0IHUxNiBsZW4gPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MzQwPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3VwbG9hZChzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM3MC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNzE6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zNzItXHRcdHJldCA9IHppaXJhdmVfZmlybV93cml0ZV9wa3Qod2RkLCBiZTMyX3RvX2NwdShyZWMtXHUwMDNlYWRkciksXG4tLVxuaW5jbHVkZS9saW51eC9paGV4Lmg9MzA9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxuaW5jbHVkZS9saW51eC9paGV4Lmg6MzE6X19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuaW5jbHVkZS9saW51eC9paGV4LmgtMzIte1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oPTM4PXN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpcbmluY2x1ZGUvbGludXgvaWhleC5oOjM5OmloZXhfbmV4dF9iaW5yZWMoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpyZWMpXG5pbmNsdWRlL2xpbnV4L2loZXguaC00MC17XG4tLVxuaW5jbHVkZS9saW51eC9paGV4LmgtNDUtXG5pbmNsdWRlL2xpbnV4L2loZXguaDo0NjpcdG5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbmluY2x1ZGUvbGludXgvaWhleC5oLTQ3LVx0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTQ5LVxuaW5jbHVkZS9saW51eC9paGV4Lmg6NTA6LyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJiMzOTt0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXG5pbmNsdWRlL2xpbnV4L2loZXguaC01MS1zdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuaW5jbHVkZS9saW51eC9paGV4LmgtNjAtXG5pbmNsdWRlL2xpbnV4L2loZXguaDo2MTpcdGZvciAoOyByZWMgXHUwMDNjPSBlbmQ7IHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5pbmNsdWRlL2xpbnV4L2loZXguaC02Mi1cdFx0LyogWmVybyBsZW5ndGggbWFya3MgZW5kIG9mIHJlY29yZHMgKi9cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYz0xNjI9c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXG4tLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTk5LVx0XHQvKiBuZXh0ICEgKi9cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjIwMDpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMjAxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMTQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaWhleCBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcywgc3BlY2lmaWNhbGx5IGJ5IG1vZGlmeWluZyBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YCB3aXRoaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgbG93LWxldmVsIGZpeCB0aGF0IGNvdWxkIGhhdmUgYSB3aWRlIGltcGFjdCwgd2hpY2ggaXMgYm90aCBpbnRyaWd1aW5nIGFuZCBwb3RlbnRpYWxseSBjcml0aWNhbC4KClRoZSBpc3N1ZSBzZWVtcyB0byBzdGVtIGZyb20gYSBsYWNrIG9mIHJvYnVzdCBib3VuZGFyeSBjaGVja2luZyB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLiBgaWhleF9uZXh0X2JpbnJlY2Agbm93IGdhaW5zIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIHdoZW4gYHJlYy0mZ3Q7bGVuYCBpcyAwLiBBIHplcm8gbGVuZ3RoIHJlY29yZCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgZmlsZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgbWFsZm9ybWVkIEhFWCBmaWxlIHRoYXQgZXJyb25lb3VzbHkgc3BlY2lmaWVzIHRoZSBmaWxlIGhhcyBhIHJlY29yZCwgYnV0IHdpdGggbGVuZ3RoIDAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYGloZXhfdmFsaWRhdGVfZndgIG5vdyBjaGVja3MgaWYgdGhlIGZpcm13YXJlIHNpemUgYGZ3LSZndDtzaXplYCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBlbmQgbWFya2VyIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGVuZCBtYXJrZXIuCgpUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBhIGNhcmVmdWxseSBjcmFmdGVkLCBtYWxpY2lvdXMgSW50ZWwgSEVYIGZpbGUgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgYW4gaW5maW5pdGUgbG9vcCBkdXJpbmcgZmlybXdhcmUgcGFyc2luZy4gR2l2ZW4gdGhhdCBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCAoYW5kIGxpa2VseSBgcmVxdWVzdF9maXJtd2FyZWAgaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2UpIGFyZSB1c2VkIGJ5IGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGRyaXZlcnMgYWNyb3NzIHZhcmlvdXMgc3Vic3lzdGVtcywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIHJlbGF0aXZlbHkgbGFyZ2UuIEkgc2VlIGl0JiMzOTtzIHVzZWQgaW4gZHJpdmVycyBmb3IgaW5wdXQgZGV2aWNlcyAobGlrZSB0b3VjaHNjcmVlbnMgYW5kIHRoZSBJTVMgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdCksIG1lZGlhIGRldmljZXMgKFVTQiBjYW1lcmFzKSwgVVNCIGF1ZGlvIGludGVyZmFjZXMsIFVTQiBzZXJpYWwgZHJpdmVycywgd2F0Y2hkb2cgdGltZXJzLCBhbmQgYXVkaW8gY29kZWNzLiBUaGF0JiMzOTtzIGEgZGl2ZXJzZSByYW5nZSwgYW5kIGVhY2ggY291bGQgYmUgc3VzY2VwdGlibGUuCgpUaGUgcGF0Y2ggbWVudGlvbnMgaG93IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB2aWEgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YC4gVGhpcyBpcyBrZXkuIFRoZSBmYWN0IHRoYXQgdGhlIGtlcm5lbCBoYXMgYW4gZXN0YWJsaXNoZWQgZnV6emluZyBmcmFtZXdvcmsgdGhhdCBjYW4gZGlyZWN0bHkgdHJpZ2dlciB0aGVzZSBmaXJtd2FyZSBsb2FkaW5nIHBhdGhzIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiBtYWtlcyB0aGUgdnVsbmVyYWJpbGl0eSBpbmNyZWRpYmx5IHJpcGUgZm9yIGV4cGxvaXRhdGlvbiBhbmQgZGlzY292ZXJ5LiBJdCBzZWVtcyBsaWtlIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciBpcyBub3Qgb3Zlcmx5IGNvbXBsaWNhdGVkLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgaGlnaC1wcmlvcml0eSBhcmVhIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZHJpdmVycyBsaXN0ZWQsIHdpdGggYSBwYXJ0aWN1bGFyIGVtcGhhc2lzIG9uIGdlbmVyYXRpbmcgYW5kIGZlZWRpbmcgdGhlbSBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpbGVzLiBXZSBjYW4gZ2V0IGEgbG90IG9mIG1pbGVhZ2UgYnkgY2hlY2tpbmcgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgYW5kIGl0JiMzOTtzIHVzYWdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2loZXhfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0xMjA0PXN0YXRpYyBzc2l6ZV90IGltc19wY3VfdXBkYXRlX2Zpcm13YXJlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTEyMjAtXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3IF9fZnJlZShmaXJtd2FyZSkgPSBOVUxMO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoxMjIxOlx0ZXJyb3IgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZncsIElNU19QQ1VfRklSTVdBUkVfTkFNRSwgcGN1LVx1MDAzZWRldik7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTEyMjItXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg3NC1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgX19mcmVlKGZpcm13YXJlKSA9IE5VTEw7XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo4NzU6XHRlcnJvciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZnduYW1lLCBkZXYpO1xuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtODc2LVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0yMjQ9c3RhdGljIGludCBzZF9pbml0KHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTIzMS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjMyOlx0cmV0ID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmZ3LCBWSUNBTV9GSVJNV0FSRSxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjMzLVx0XHRcdFx0ICAgIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9NzE9c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04NS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzo4NjpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZsb2FkZXJfZncsIFwmIzM0O2VtaTI2L2xvYWRlci5md1wmIzM0OywgXHUwMDI2ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04OS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzo5MDpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZiaXRzdHJlYW1fZncsIFwmIzM0O2VtaTI2L2JpdHN0cmVhbS5md1wmIzM0OyxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05MS1cdFx0XHRcdCAgICBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtOTQtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTU6XHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZmlybXdhcmVfZncsIFwmIzM0O2VtaTI2L2Zpcm13YXJlLmZ3XCYjMzQ7LFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTk2LVx0XHRcdFx0ICAgIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz03OT1zdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk0LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk1Olx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmxvYWRlcl9mdywgXCYjMzQ7ZW1pNjIvbG9hZGVyLmZ3XCYjMzQ7LCBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy05Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk4LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk5Olx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmJpdHN0cmVhbV9mdywgXCYjMzQ7ZW1pNjIvYml0c3RyZWFtLmZ3XCYjMzQ7LFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwMC1cdFx0XHRcdCAgICBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTAzLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjEwNDpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmaXJtd2FyZV9mdywgRklSTVdBUkVfRlcsIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwNS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTY1LVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjY2Olx0aWYgKHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmaXJtd2FyZSwgZmlybXdhcmVfcGF0aCxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy02Ny1cdFx0XHRcdCAgXHUwMDI2ZGV2LVx1MDAzZWRldikpIHtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0zMTA9c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMzQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMzU6XHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNi1cdFx0XHRcdFx0IFx1MDAyNmVkZ2Vfc2VyaWFsLVx1MDAzZXNlcmlhbC1cdTAwM2VkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0yNjI3PXN0YXRpYyB2b2lkIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmUoc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY1Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NTc6XHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NTgtXHRcdFx0XHQgICAgXHUwMDI2ZWRnZV9zZXJpYWwtXHUwMDNlc2VyaWFsLVx1MDAzZWRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz01MDY9c3RhdGljIHNzaXplX3QgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTUxNC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzo1MTU6XHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZncsIFpJSVJBVkVfRldfTkFNRSwgZGV2KTtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MTYtXHRpZiAoZXJyKSB7XG4tLVxuaW5jbHVkZS9saW51eC9paGV4Lmg9NTE9c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTcwLSAqIHJ1biBvZmYgdGhlIGVuZCB3aGlsZSByZWFkaW5nIHJlY29yZHMuLi4gKi9cbmluY2x1ZGUvbGludXgvaWhleC5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcbmluY2x1ZGUvbGludXgvaWhleC5oLTcyLVx0XHRcdFx0XHRjb25zdCBjaGFyICpmd19uYW1lLFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTE2Mj1zdGF0aWMgaW50IHpsMzhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcClcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNzctXHQgKi9cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjE3ODpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgXCYjMzQ7emwzODA2MC5md1wmIzM0OywgZGV2KTtcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE3OS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0MAoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIFZ1bG5lcmFibGUgRmlybXdhcmUgVmFsaWRhdGlvbioqCgpPa2F5LCBzbyB0aGUgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoLCBJIGtub3csIGlzIHNvbWV0aGluZyBTeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUuIFdlIGNhbiBmZWVkIGl0IGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyBkaXJlY3RseS4gVGhpcyBtZWFucywgaWYgdGhlcmUmIzM5O3MgYSB2dWxuZXJhYmlsaXR5IGluIGBpaGV4X3ZhbGlkYXRlX2Z3YCBhZnRlciBgcmVxdWVzdF9maXJtd2FyZWAsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaXQgd2l0aCBTeXprYWxsZXIuIEV4Y2VsbGVudC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIHRoaXMgZmxvdy4gV2UgbmVlZCB0byBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbnMuCgpSaWdodCwgbGV0JiMzOTtzIGxpc3QgdGhlbSBvdXQ6IGBkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jYCB1c2VzIGBDT05GSUdfSU5QVVRfSU1TX1BDVWAsIGBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguY2AgLSZndDsgYENPTkZJR19UT1VDSFNDUkVFTl9JTEkyMTBYYCwgYGRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmNgIC0mZ3Q7IGBDT05GSUdfVVNCX0dTUENBX1ZJQ0FNYCwgYGRyaXZlcnMvdXNiL21pc2MvZW1pMjYuY2AgLSZndDsgYENPTkZJR19VU0JfRU1JMjZgLCBgZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jYCAtJmd0OyBgQ09ORklHX1VTQl9FTUk2MmAsIGBkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmNgIC0mZ3Q7IGBDT05GSUdfVVNCX0VaVVNCYCAoaW1wb3J0YW50LCBiZWNhdXNlIGV2ZW4gaWYgbm90IGEgbW9kdWxlIGRpcmVjdGx5LCBvdGhlcnMgbWF5IHVzZSBpdCEpLCBgZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmNgIC0mZ3Q7IGBDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVGAsIGBkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmNgIC0mZ3Q7IGBDT05GSUdfWklJUkFWRV9XQVRDSERPR2AsIGFuZCBmaW5hbGx5LCBgc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmNgIC0mZ3Q7IGBDT05GSUdfU05EX1NPQ19aTDM4MDYwYC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5QVVRfSU1TX1BDVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZz03ODU9Y29uZmlnIElOUFVUX0lCTV9QQU5FTFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnLTgwMi1cbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnOjgwMzpjb25maWcgSU5QVVRfSU1TX1BDVVxuZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWctODA0LVx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZz00Nzg9Y29uZmlnIFRPVUNIU0NSRUVOX0hZTklUUk9OX0NTVDgxNlhcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWctNDg5LVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnOjQ5MDpjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnLTQ5MS1cdHRyaXN0YXRlIFwmIzM0O0lsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfR1NQQ0FfVklDQU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9HU1BDQV9WQzAzMlhcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnLTQyMi1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWc6NDIzOmNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7VmlDYW0gVVNCIENhbWVyYSBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9FTUkyNiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MzY9Y29uZmlnIFVTQl9FTUk2MlxuLS1cbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy00OS1cbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZzo1MDpjb25maWcgVVNCX0VNSTI2XG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctNTEtXHR0cmlzdGF0ZSBcJiMzNDtFTUkgMnw2IFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0VNSTYyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz03PWNvbmZpZyBVU0JfVVNTNzIwXG4tLVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTM1LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjM2OmNvbmZpZyBVU0JfRU1JNjJcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0VNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0yMDU9Y29uZmlnIFVTQl9TRVJJQUxfSVJcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyMTU6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMzktXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaSUlSQVZFX1dBVENIRE9HJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZz0zNTU9Y29uZmlnIFhJTElOWF9XSU5ET1dfV0FUQ0hET0dcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMzcyLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnOjM3Mzpjb25maWcgWklJUkFWRV9XQVRDSERPR1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlIFwmIzM0O1pvZGlhYyBSQVZFIFdhdGNoZG9nIFRpbWVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DX1pMMzgwNjAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL2NvZGVjcy9LY29uZmlnPTI3NjU9Y29uZmlnIFNORF9TT0NfV1NBODg0WFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0yNzcyLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjI3NzM6Y29uZmlnIFNORF9TT0NfWkwzODA2MFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTI3NzQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3JcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NjEKCQkJCQkJCW91dHB1dDogMjkyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogRW5hYmxpbmcgQ29uZmlncyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBncmVlbmxpZ2h0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZvciBkZXBsb3ltZW50LCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlIGFuZCBvcGVyYXRpb25hbC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBzeXN0ZW0tbGV2ZWwgY2hhbmdlcyBoZXJlLCBhbmQgYSBtaXNjb25maWd1cmVkIGRlcGVuZGVuY3kgY291bGQgbGVhZCB0byBjYXNjYWRpbmcgZmFpbHVyZXMg4oCTIHNvbWV0aGluZyBJJiMzOTtkIGxpa2UgdG8gYXZvaWQgYXQgYWxsIGNvc3RzLCBlc3BlY2lhbGx5IGR1cmluZyBhIHByb2R1Y3Rpb24gcm9sbG91dC4gU28sIEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwcmVyZXF1aXNpdGUgc2VydmljZXMsIGxpYnJhcmllcywgYW5kIGV4dGVybmFsIHJlc291cmNlcyB0aGF0IHRoZXNlIGNvbmZpZ3MgcmVseSBvbi4gSSYjMzk7bSBmb2N1c2luZyBub3QganVzdCBvbiB3aGV0aGVyIHRoZXkgKmV4aXN0KiwgYnV0IGFsc28gb24gdGhlaXIgY3VycmVudCBzdGF0ZSDigJMgYXJlIHRoZXkgaGVhbHRoeSwgcGVyZm9ybWluZyBhcyBleHBlY3RlZCwgYW5kIGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkPyBBcmUgdGhlIEFQSSBlbmRwb2ludHMgdGhleSB1c2Ugc3RhYmxlLCB3aXRoIHN1aXRhYmxlIHJhdGUgbGltaXRzLCBhbmQgZG9lcyB0aGUgdW5kZXJseWluZyBpbmZyYXN0cnVjdHVyZSBoYXZlIGVub3VnaCBjYXBhY2l0eSB0byBzdXBwb3J0IGFueSBuZXcgZGVtYW5kcyB0aGVzZSBjb25maWdzIG1pZ2h0IGludHJvZHVjZT8gSSYjMzk7bSBjcm9zcy1yZWZlcmVuY2luZyBhbnkgcmVjZW50IGNoYW5nZXMgdG8gZGVwZW5kZW50IHN5c3RlbXM7IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgaW5jb21wYXRpYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMgdGhhdCBtaWdodCBoYXZlIGZsb3duIHVuZGVyIHRoZSByYWRhci4gRmluYWxseSwgSeKAmWxsIG5lZWQgdG8gY29uZmlybSB0aGF0IGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhlc2UgY29uZmlncyBoYXZlIGJlZW4gZnVsbHkgYWRkcmVzc2VkIGFuZCB0aGF0IGFwcHJvcHJpYXRlIGFjY2VzcyBjb250cm9scyBhcmUgZXN0YWJsaXNoZWQuIE5vIHBvaW50IGluIG1ha2luZyBhIGdyZWF0IGVuaGFuY2VtZW50IGlmIGl0IGV4cG9zZXMgYSB2dWxuZXJhYmlsaXR5LiBBIHRob3JvdWdoIGRlcGVuZGVuY3kgY2hlY2sgaXMgdGhlIG9ubHkgd2F5IHRvIG1pbmltaXplIHRoZSByaXNrcyBhbmQgdmFsaWRhdGUgd2UgY2FuIHByb2NlZWQgc2FmZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDM6XHRjb25maWcgSU5QVVRfSU1TX1BDVVxuIDgwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4gODA1Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDgwNjpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTXG4gODA3Olx0XHRoZWxwXG4gODA4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgc3lzdGVtIHdpdGggSU1TIFJhdmUgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdC5cbiA4MDk6XHRcbiA4MTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gODExOlx0XHQgIGNhbGxlZCBpbXNfcGN1LlxuIDgxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDkwOlx0Y29uZmlnIFRPVUNIU0NSRUVOX0lMSTIxMFhcbiA0OTE6XHRcdHRyaXN0YXRlIFwmIzM0O0lsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXCYjMzQ7XG4gNDkyOlx0XHRkZXBlbmRzIG9uIEkyQ1xuIDQ5MzpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuIDQ5NDpcdFx0aGVscFxuIDQ5NTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxuIDQ5NjpcdFx0ICBjb250cm9sbGVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb2RlbHMgSUxJMjEwMixcbiA0OTc6XHRcdCAgSUxJMjEwMnMsIElMSTIxMDMsIElMSTIxMDNzIGFuZCBJTEkyMTA1LlxuIDQ5ODpcdFx0ICBTdWNoIGtpbmQgb2YgY2hpcHNldHMgY2FuIGJlIGZvdW5kIGluIEFtYXpvbiBLaW5kbGUgRmlyZVxuIDQ5OTpcdFx0ICB0b3VjaHNjcmVlbnMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDIzOlx0Y29uZmlnIFVTQl9HU1BDQV9WSUNBTVxuIDQyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlDYW0gVVNCIENhbWVyYSBEcml2ZXJcJiMzNDtcbiA0MjU6XHRcdGRlcGVuZHMgb24gVklERU9fREVWIFx1MDAyNlx1MDAyNiBVU0JfR1NQQ0FcbiA0MjY6XHRcdGhlbHBcbiA0Mjc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCBzdXBwb3J0IGZvciB0aGUgM2NvbSBob21lY29ubmVjdCBjYW1lcmFcbiA0Mjg6XHRcdCAgKHZpY2FtKS5cbiA0Mjk6XHRcbiA0MzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNDMxOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBnc3BjYV92aWNhbS5cbiA0MzI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0Y29uZmlnIFVTQl9FTUkyNlxuICA1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7RU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSAyfDYgbG93IGxhdGVuY3kgVVNCXG4gIDU0Olx0XHQgIEF1ZGlvIGludGVyZmFjZS5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxuICA1NzpcdFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxuICA1ODpcdFxuICA1OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDM2Olx0Y29uZmlnIFVTQl9FTUk2MlxuICAzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7RU1JIDZ8Mm0gVVNCIEF1ZGlvIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgNnwybSBsb3cgbGF0ZW5jeSBVU0JcbiAgNDA6XHRcdCAgQXVkaW8gYW5kIE1pZGkgaW50ZXJmYWNlLlxuICA0MTpcdFxuICA0MjpcdFx0ICBBZnRlciBmaXJtd2FyZSBsb2FkIHRoZSBkZXZpY2UgaXMgaGFuZGxlZCB3aXRoIHN0YW5kYXJkIGxpbnV4XG4gIDQzOlx0XHQgIFVTQiBBdWRpbyBkcml2ZXIuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIFRoaXMgY29kZSBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaCBjYW4gYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcbiAyMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbiAyMTc6XHRcdGhlbHBcbiAyMTg6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgZGV2aWNlcyBmcm9tXG4gMjE5Olx0XHQgIEluc2lkZSBPdXQgTmV0d29ya3MgKERpZ2kpOlxuIDIyMDpcdFx0ICBFZGdlcG9ydC80XG4gMjIxOlx0XHQgIFJhcGlkcG9ydC80XG4gMjIyOlx0XHQgIEVkZ2Vwb3J0LzR0XG4gMjIzOlx0XHQgIEVkZ2Vwb3J0LzJcbiAyMjQ6XHRcdCAgRWRnZXBvcnQvNGlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MzpcdGNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXG4gMzc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtab2RpYWMgUkFWRSBXYXRjaGRvZyBUaW1lclwmIzM0O1xuIDM3NTpcdFx0ZGVwZW5kcyBvbiBJMkNcbiAzNzY6XHRcdHNlbGVjdCBXQVRDSERPR19DT1JFXG4gMzc3Olx0XHRoZWxwXG4gMzc4Olx0XHQgIFdhdGNoZG9nIGRyaXZlciBmb3IgdGhlIFpvZGlhYyBBZXJvc3BhY2UgUkFWRSBTd2l0Y2ggV2F0Y2hkb2dcbiAzNzk6XHRcdCAgUHJvY2Vzc29yLlxuIDM4MDpcdFxuIDM4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAzODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHppaXJhdmVfd2R0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjc3MzpcdGNvbmZpZyBTTkRfU09DX1pMMzgwNjBcbjI3NzQ6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc2VtaSBaTDM4MDYwIENvbm5lY3RlZCBIb21lIEF1ZGlvIFByb2Nlc3NvclwmIzM0O1xuMjc3NTpcdFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXG4yNzc2Olx0XHRkZXBlbmRzIG9uIEdQSU9MSUJcbjI3Nzc6XHRcdHNlbGVjdCBSRUdNQVBcbjI3Nzg6XHRcdGhlbHBcbjI3Nzk6XHRcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXG4yNzgwOlx0XHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcbjI3ODE6XHRcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cbjI3ODI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVmVyaWZpY2F0aW9uIFBsYW4qKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXkmIzM5O3JlIGlubGluZSBmdW5jdGlvbnMgcmVzaWRpbmcgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCwgbWVhbmluZyB0aGV5JiMzOTtyZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGVtLiBUaGUgbWFpbiBjaGFsbGVuZ2Ugbm93IGlzIHRvIHZlcmlmeSB0aGlzIGZpeCBieSBlbnN1cmluZyB0aGUgcmVsZXZhbnQgY29kZSBnZXRzIGNvbXBpbGVkIGFuZCBpcywgaWRlYWxseSwgZnV6emVkLgoKSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgZW5hYmxpbmcgYSBicm9hZGVyIHNldCBvZiBkcml2ZXJzLiBJIGhhZCBsaXN0ZWQgYElOUFVUX0lNU19QQ1VgLCBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAsIGBVU0JfR1NQQ0FfVklDQU1gLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEhvd2V2ZXIsIGEgcXVpY2sgcmV2aWV3IG9mIGRlcGVuZGVuY2llcyByZXZlYWxzIGEgZmV3IHBvdGVudGlhbCBjb21wbGljYXRpb25zLiBgVVNCX0dTUENBX1ZJQ0FNYCBuZWVkcyBgVklERU9fREVWYCBhbmQgYFVTQl9HU1BDQWAuIGBJTlBVVF9JTVNfUENVYCByZWxpZXMgb24gYFVTQmAgYW5kIGBMRURTX0NMQVNTYC4gQm90aCBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAgYW5kIGBaSUlSQVZFX1dBVENIRE9HYCBkZXBlbmQgb24gYEkyQ2AuIEFuZCBmaW5hbGx5LCBgU05EX1NPQ19aTDM4MDYwYCBuZWVkcyBgU1BJX01BU1RFUmAgYW5kIGBHUElPTElCYC4KCkdpdmVuIHRoZXNlIGRlcGVuZGVuY2llcywgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHBhdGggaXMgdG8gZm9jdXMgb24gVVNCIGRyaXZlcnMgZm9yIG5vdy4gVGhleSBjYW4gYmUgcmVsYXRpdmVseSBlYXNpbHkgZnV6emVkIHVzaW5nIGBkdW1teV9oY2RgLiBUaGVyZWZvcmUsIEkmIzM5O2xsIHByaW9yaXRpemUgZW5hYmxpbmcgYFVTQl9FTUkyNmAsIGBVU0JfRU1JNjJgLCBgVVNCX1NFUklBTF9FREdFUE9SVGAsIGFuZCBgSU5QVVRfSU1TX1BDVWAuCgpBZGRpdGlvbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoZSB1c2FnZSBvZiBgVVNCX0VaVVNCYCBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYnkgYFVTQl9TRVJJQUxfS0VZU1BBTmAgYW5kIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gSXQmIzM5O3Mgd29ydGggYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgcHJvcGVybHkgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9FWlVTQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MjY1PWNvbmZpZyBVU0JfWVVSRVhcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMjc2LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjI3Nzpjb25maWcgVVNCX0VaVVNCX0ZYMlxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0Z1bmN0aW9ucyBmb3IgbG9hZGluZyBmaXJtd2FyZSBvbiBFWlVTQiBjaGlwc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTI5MT1jb25maWcgVVNCX1NFUklBTF9JVVVcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDAtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYwMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkV4YW1pbmluZyB0aGUgRVotVVNCIERyaXZlciBDb21waWxhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBVU0IgZHJpdmVyLCBgZXp1c2IuY2AsIGlzIGdldHRpbmcgY29tcGlsZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBUaGUgZmlsZSBwYXRoIGlzIGBkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmNgLCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBkcml2ZXIsIG5vdCBkZWVwbHkgbmVzdGVkIHdpdGhpbiBzb21lIGVsYWJvcmF0ZSBhcmNoaXRlY3R1cmUuIEkga25vdyB0aGF0IGxvb2tpbmcgYXQgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiBpcyBoZWxwZnVsLCBidXQgZmlyc3QgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGUgYnVpbGQgc3lzdGVtIGhhbmRsZXMgaXQuIFRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB3aXRoIHRoaXMgcXVlc3Rpb24sIGluIHRoaXMgY29udGV4dCwgaXMgcHJvYmFibHkgdGhlIHNvdXJjZSB0cmVlLCBJJiMzOTtsbCBnbyBoYXZlIGEgbG9vayBpbiB0aGF0IGZpbGUuIEkgY2FuIGdldCBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGJ1aWxkIGlzIGJlaW5nIG9yY2hlc3RyYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXp1c2IubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfRU1JNjIpXHRcdFx0JiM0Mzs9IGVtaTYyLm9cbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9FWlVTQl9GWDIpXHRcdCYjNDM7PSBlenVzYi5vXG5kcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19BUFBMRV9NRklfRkFTVENIQVJHRSlcdCYjNDM7PSBhcHBsZS1tZmktZmFzdGNoYXJnZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgVVNCLUJhc2VkIEhhcmR3YXJlIGZvciBJbWFnaW5nIGFuZCBTZXJpYWwgQ29tbXVuaWNhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgQ09ORklHX1VTQl9FWlVTQl9GWDJgIGRyaXZlci4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIG1hcCBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGZvciBhIHN5c3RlbSB1dGlsaXppbmcgdGhpcyBjaGlwLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgbGlzdCB0aG9zZSBjb25maWdzIHdlIGtub3cgd2UgbmVlZCB0byBlbmFibGUsIGluY2x1ZGluZyB0aGUgYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCBkcml2ZXJzLCBhbmQgb2YgY291cnNlIGBVU0JfRVpVU0JfRlgyYC4mIzM0OwoKTmV4dCwgbXkgbWVudGFsIGNoZWNrbGlzdCBtb3ZlcyB0byBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFueSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyB0aGF0IHRoZSBgVVNCX0VaVVNCX0ZYMmAgZHJpdmVyIG1pZ2h0IGhhdmUuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjc3Olx0Y29uZmlnIFVTQl9FWlVTQl9GWDJcbiAyNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0Z1bmN0aW9ucyBmb3IgbG9hZGluZyBmaXJtd2FyZSBvbiBFWlVTQiBjaGlwc1wmIzM0O1xuIDI3OTpcdFx0aGVscFxuIDI4MDpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBuZWVkIEVaVVNCIGRldmljZSBzdXBwb3J0LlxuIDI4MTpcdFx0ICAoQ3lwcmVzcyBGWC9GWDIvRlgyTFAgbWljcm9jb250cm9sbGVycylcbiAyODI6XHRcbiAyODM6XHRjb25maWcgVVNCX0hVQl9VU0IyNTFYQlxuIDI4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCMjUxWEIgSHViIENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbiBEcml2ZXJcJiMzNDtcbiAyODU6XHRcdGRlcGVuZHMgb24gSTJDXG4gMjg2Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzgwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2stSW4qKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIGBVU0JfRVpVU0JfRlgyYCDigJMgbm9wZSwgY2xlYW4uIE5vIGV4dGVybmFsIGxpYnJhcnkgaG9va3Mgb3IgdHJpY2t5IGJ1aWxkIGZsYWdzIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBBbHdheXMgYSBnb29kIHNpZ24uCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgKm1lYXQqIG9mIGl0OiBgVVNCX1NFUklBTF9FREdFUE9SVGAuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIHRlbmQgdG8gZ2V0IGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBiaXQgdGFuZ2xlZC4gR290dGEgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gRGlnZ2luZyBpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTU6XHRjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxuIDIxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDIxNzpcdFx0aGVscFxuIDIxODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBkZXZpY2VzIGZyb21cbiAyMTk6XHRcdCAgSW5zaWRlIE91dCBOZXR3b3JrcyAoRGlnaSk6XG4gMjIwOlx0XHQgIEVkZ2Vwb3J0LzRcbiAyMjE6XHRcdCAgUmFwaWRwb3J0LzRcbiAyMjI6XHRcdCAgRWRnZXBvcnQvNHRcbiAyMjM6XHRcdCAgRWRnZXBvcnQvMlxuIDIyNDpcdFx0ICBFZGdlcG9ydC80aVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDcyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRldmljZSBEcml2ZXIgRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gRmlyc3QsIGdvb2QsIG5vIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgZm9yIGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhhdCYjMzk7cyBhIGNsZWFuIHNsYXRlLCBhbHdheXMgYSBuaWNlIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBzaGlmdCBteSBmb2N1cyB0byB0aG9zZSByZWxhdGVkIEVNSSBkZXZpY2VzIC0gYFVTQl9FTUkyNmAgYW5kIGBVU0JfRU1JNjJgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVVNCX1NFUklBTF9FREdFUE9SVGAgaXNuJiMzOTt0IGluYWR2ZXJ0ZW50bHkgcmVsaWFudCBvbiBzb21lIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBzdHJ1Y3R1cmVzIHByb3ZpZGVkIGJ5IGVpdGhlciBvZiB0aG9zZS4gTmVlZCB0byBxdWlja2x5IHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc2hhcmVkIGNvZGUgb3IgY29tbW9uIGVsZW1lbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIHNob3VsZCBhbHNvIHRoaW5rIGFib3V0IHdoZXRoZXIgdGhleSYjMzk7cmUgbGlrZWx5IHRvIGhhdmUgYW55IGtpbmQgb2Ygc2hhcmVkIGludGVycnVwdCBzdHJ1Y3R1cmUgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi4gR29pbmcgdG8gZGlnIGludG8gdGhvc2UgbW9kdWxlcyBuZXh0LCBhbmQgY3Jvc3MtcmVmZXJlbmNlLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzY6XHRjb25maWcgVVNCX0VNSTYyXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtFTUkgNnwybSBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSA2fDJtIGxvdyBsYXRlbmN5IFVTQlxuICA0MDpcdFx0ICBBdWRpbyBhbmQgTWlkaSBpbnRlcmZhY2UuXG4gIDQxOlx0XG4gIDQyOlx0XHQgIEFmdGVyIGZpcm13YXJlIGxvYWQgdGhlIGRldmljZSBpcyBoYW5kbGVkIHdpdGggc3RhbmRhcmQgbGludXhcbiAgNDM6XHRcdCAgVVNCIEF1ZGlvIGRyaXZlci5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgVGhpcyBjb2RlIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxuICA0NjpcdFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCkuXG4gIDQ3Olx0XHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYXVkaW8uIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgYXMgYVxuICA0ODpcdFx0ICBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiAgNDk6XHRcbiAgNTA6XHRjb25maWcgVVNCX0VNSTI2XG4gIDUxOlx0XHR0cmlzdGF0ZSBcJiMzNDtFTUkgMnw2IFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGRyaXZlciBsb2FkcyBmaXJtd2FyZSB0byBFbWFnaWMgRU1JIDJ8NiBsb3cgbGF0ZW5jeSBVU0JcbiAgNTQ6XHRcdCAgQXVkaW8gaW50ZXJmYWNlLlxuICA1NTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6CgoqKkRlcGVuZGVuY3kgQW5hbHlzaXMgaW4gUHJvZ3Jlc3MqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBxdWljayBhc3Nlc3NtZW50LiBJIHNlZSBubyBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfRU1JMjZgIG9yIGBVU0JfRU1JNjJgLCB3aGljaCBpcyBnb29kLiBUaGF0IGxpa2VseSBzaW1wbGlmaWVzIHRoaW5ncywgYXQgbGVhc3Qgb24gdGhlIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiB0byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgcmV2aWV3IHRoZSBhcmNoaXRlY3R1cmUgZG9jdW1lbnRzIHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlIGFyZSBubyBpbXBsaWNpdCBvciBpbmRpcmVjdCByZWxhdGlvbnNoaXBzIEkmIzM5O20gbWlzc2luZy4gR290IHRvIGJlIHRob3JvdWdoIGhlcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgcGl2b3QgYW5kIGV4YW1pbmUgdGhlIGBJTlBVVF9JTVNfUENVYCBjb21wb25lbnQuIEl0IGNvdWxkIGhhdmUgY29ubmVjdGlvbnMgSSYjMzk7bSBub3Qgc2VlaW5nIHlldC4gVW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgc21vb3RoIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDM6XHRjb25maWcgSU5QVVRfSU1TX1BDVVxuIDgwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4gODA1Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDgwNjpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTXG4gODA3Olx0XHRoZWxwXG4gODA4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgc3lzdGVtIHdpdGggSU1TIFJhdmUgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdC5cbiA4MDk6XHRcbiA4MTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gODExOlx0XHQgIGNhbGxlZCBpbXNfcGN1LlxuIDgxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY3NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB0d28ga2V5IGNvbXBvbmVudHM6IHRoZSBgVVNCYCBzZXR0aW5nIGFuZCB0aGUgYExFRFNfQ0xBU1NgLiBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIGludHVpdGlvbiBvbiB0aGlzLCBhbmQgYExFRFNfQ0xBU1NgIGlzICp1c3VhbGx5KiBlbmFibGVkIGJ5IGRlZmF1bHQuIFN0aWxsLCBpdCYjMzk7cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdG8gY29uZmlybSB0aGF0JiMzOTtzIHRoZSBjYXNlIGluIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gV2UmIzM5O3JlIGdvaW5nIHRvIHRyZWF0IGl0IGFzIGFuIGluY2x1c2lvbiBlaXRoZXIgd2F5LiBOb3csIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYFVTQl9HU1BDQV9WSUNBTWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGxpZXMuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQgdGhhdCYjMzk7cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjM6XHRjb25maWcgVVNCX0dTUENBX1ZJQ0FNXG4gNDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclwmIzM0O1xuIDQyNTpcdFx0ZGVwZW5kcyBvbiBWSURFT19ERVYgXHUwMDI2XHUwMDI2IFVTQl9HU1BDQVxuIDQyNjpcdFx0aGVscFxuIDQyNzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxuIDQyODpcdFx0ICAodmljYW0pLlxuIDQyOTpcdFxuIDQzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA0MzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGdzcGNhX3ZpY2FtLlxuIDQzMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYmVoYXZpb3IgSSYjMzk7bSBzZWVpbmcgaXMgc3Ryb25nbHkgY29udGluZ2VudCBvbiBhIGZldyBzcGVjaWZpYyBmYWN0b3JzLiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBgVklERU9fREVWYCBhbmQgYFVTQl9HU1BDQWAuIFRoZXNlIGFyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgd2hlbiBjb25zaWRlcmluZyB2aWRlbyBpbnB1dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3RhbmRhcmQgdmlkZW8gZGV2aWNlIGFuZCBpZiB0aGUgVVNCIGdzcGNhIGRyaXZlcnMgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgbGV2ZWwgY2hlY2suCgpUaGVuLCBzaW5jZSB0aGlzIGxpa2VseSBpbnZvbHZlcyBzb21lIGtpbmQgb2YgZGlzcGxheSBpbnRlcmFjdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBpbW1lZGlhdGVseSBpbnZlc3RpZ2F0ZSBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIGVuYWJsZWQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaGFzIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0OTA6XHRjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxuIDQ5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SWxpdGVrIElMSTIxMFggYmFzZWQgdG91Y2hzY3JlZW5cJiMzNDtcbiA0OTI6XHRcdGRlcGVuZHMgb24gSTJDXG4gNDkzOlx0XHRzZWxlY3QgQ1JDX0NDSVRUXG4gNDk0Olx0XHRoZWxwXG4gNDk1Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXG4gNDk2Olx0XHQgIGNvbnRyb2xsZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vZGVscyBJTEkyMTAyLFxuIDQ5NzpcdFx0ICBJTEkyMTAycywgSUxJMjEwMywgSUxJMjEwM3MgYW5kIElMSTIxMDUuXG4gNDk4Olx0XHQgIFN1Y2gga2luZCBvZiBjaGlwc2V0cyBjYW4gYmUgZm91bmQgaW4gQW1hem9uIEtpbmRsZSBGaXJlXG4gNDk5Olx0XHQgIHRvdWNoc2NyZWVucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZnJhbWVkIGFzIHlvdXIgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGhpbmdlcyBvbiB0aGUgYEkyQ2AgYnVzLCB0aGF0JiMzOTtzIHRoZSBjb3JlLiBCZWZvcmUgSSBkaWcgYW55IGRlZXBlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgSTJDIGlzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBOb3csIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYFpJSVJBVkVfV0FUQ0hET0dgIGlzIGludGVyYWN0aW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGF0IGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM3MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzczOlx0Y29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcbiAzNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1pvZGlhYyBSQVZFIFdhdGNoZG9nIFRpbWVyXCYjMzQ7XG4gMzc1Olx0XHRkZXBlbmRzIG9uIEkyQ1xuIDM3NjpcdFx0c2VsZWN0IFdBVENIRE9HX0NPUkVcbiAzNzc6XHRcdGhlbHBcbiAzNzg6XHRcdCAgV2F0Y2hkb2cgZHJpdmVyIGZvciB0aGUgWm9kaWFjIEFlcm9zcGFjZSBSQVZFIFN3aXRjaCBXYXRjaGRvZ1xuIDM3OTpcdFx0ICBQcm9jZXNzb3IuXG4gMzgwOlx0XG4gMzgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDM4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgemlpcmF2ZV93ZHQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODMwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSTJDIERlcGVuZGVudCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIG9uIGBJMkNgLiBUaGF0JiMzOTtzIHRoZSBnYXRld2F5IGhlcmUuIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQgcHJvdG9jb2wsIHNvIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGZpcnN0LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIGhvdyBgSTJDYCBpcyBiZWluZyBsZXZlcmFnZWQuCgpUaGF0IG5hdHVyYWxseSBsZWFkcyBtZSB0byB0aGluayBhYm91dCBgU05EX1NPQ19aTDM4MDYwYC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlciBob3cgdGhhdCByZWxhdGVzIHRvIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoYXQgc3BlY2lmaWMgbW9kdWxlIG5vdy4gTXkgdGhvdWdodHMgbm93IGFyZSBmb2N1c2VkIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyY29ubmVjdGlvbiB3aXRoIHRoZSBhdWRpbyBjb2RlYyBhbmQgd2hhdCBpbmZvcm1hdGlvbiBJIGNhbiBnYXRoZXIgZnJvbSBgU05EX1NPQ19aTDM4MDYwYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgYXJlYSB0byBhc3Nlc3MgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9zb2MvY29kZWNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzczLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3NzM6XHRjb25maWcgU05EX1NPQ19aTDM4MDYwXG4yNzc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3JcJiMzNDtcbjI3NzU6XHRcdGRlcGVuZHMgb24gU1BJX01BU1RFUlxuMjc3NjpcdFx0ZGVwZW5kcyBvbiBHUElPTElCXG4yNzc3Olx0XHRzZWxlY3QgUkVHTUFQXG4yNzc4Olx0XHRoZWxwXG4yNzc5Olx0XHQgIFN1cHBvcnQgZm9yIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yIGZyb20gTWljcm9zZW1pLFxuMjc4MDpcdFx0ICB3aGljaCBjb25zaXN0cyBvZiBhIERpZ2l0YWwgU2lnbmFsIFByb2Nlc3NvciAoRFNQKSwgc2V2ZXJhbCBEaWdpdGFsXG4yNzgxOlx0XHQgIEF1ZGlvIEludGVyZmFjZXMgKERBSXMpLCBhbmFsb2cgb3V0cHV0cywgYW5kIGEgYmxvY2sgb2YgMTQgR1BJT3MuXG4yNzgyOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjMzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgY29uZmlndXJhdGlvbiBoZXJlIGhpbmdlcyBvbiB0aGUgYFNQSV9NQVNURVJgIGFuZCBgR1BJT0xJQmAgZGVwZW5kZW5jaWVzLiBUaG9zZSBhcmUgZm91bmRhdGlvbmFsLCBzbyB0aGV5JiMzOTtyZSBpbiBwbGFjZS4gTm93LCBJJiMzOTttIGxvb2tpbmcgYXQgVVNCIGRyaXZlcnMgdGhhdCByZWx5IG9uIGloZXggZmlybXdhcmUuIEkmIzM5O2xsIGVuYWJsZSBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9FWlVTQl9GWDJgLCBgSU5QVVRfSU1TX1BDVWAsIGFuZCBgTEVEU19DTEFTU2AuIFRoZXNlIGFyZSBjb21tb24gdGFyZ2V0cyBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgoKV2FpdCBhIHNlY29uZCwgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgYFVTQl9FWlVTQl9GWDJgLS10aGF0JiMzOTtzIG5vdCBhIGRyaXZlciwgaXQmIzM5O3MgYSBsaWJyYXJ5LiBXaGljaCBtZWFucyBpdCBpcyB1c2VkIGJ5IG90aGVyIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBlbnRpcmUgc3RhY2sgYW5kIHRoYXQgSSBnZXQgaXQgcmlnaHQuIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAgc2luY2UgdGhleSB1c2UgdGhlIGBVU0JfRVpVU0JfRlgyYCBsaWJyYXJ5LiBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMTpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5fUERBXG4gMzAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDMwMzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMDQ6XHRcdGhlbHBcbiAzMDU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBLZXlzcGFuIFBEQSwgWGlyY29tIG9yIEVudHJlZ2Egc2luZ2xlXG4gMzA2Olx0XHQgIHBvcnQgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLiBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2ZcbiAzMDc6XHRcdCAgZmlybXdhcmUgZGV2ZWxvcGVkIGZyb20gc2NyYXRjaCBieSBCcmlhbiBXYXJuZXIuXG4gMzA4Olx0XG4gMzA5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDMxMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTlxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEtleXNwYW4gVVNBLXh4eCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4gMzE0Olx0XHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBLZXlzcGFuIFVTQiB0byBzZXJpYWwgY29udmVydGVyXG4gMzE3Olx0XHQgIGRldmljZXMuICBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2YgS2V5c3BhbiYjMzk7cyBvZmZpY2lhbCBmaXJtd2FyZVxuIDMxODpcdFx0ICBhbmQgd2FzIGRldmVsb3BlZCB3aXRoIHRoZWlyIHN1cHBvcnQuICBZb3UgbXVzdCBhbHNvIGluY2x1ZGVcbiAzMTk6XHRcdCAgZmlybXdhcmUgdG8gc3VwcG9ydCB5b3VyIHBhcnRpY3VsYXIgZGV2aWNlKHMpLlxuIDMyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1NgoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgUmVmaW5lbWVudCoqCgpPa2F5LCBzbyB0aGUgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOYCBkcml2ZXJzIGFyZSByZWxhdGVkIHRvIHRoZSBgVVNCX0VaVVNCX0ZYMmAgZGV2aWNlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4KClRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaG9zZSBhcmUgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAuIEdpdmVuIHRoYXQgdGhleSYjMzk7cmUgaW5saW5lLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYWN0dWFsbHkgKmNhbGwqIHRob3NlLiAgSSYjMzk7dmUgZ290IGEgbGlzdCBoZXJlOiBgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlYCwgYGltc19wY3VfY291bnRfZndfcmVjb3Jkc2AsIGBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlYCwgYGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyYCwgYHNkX2luaXRgIChpbiB2aWNhbS5jKSwgYGVtaTI2X2xvYWRfZmlybXdhcmVgLCBgZW1pNjJfbG9hZF9maXJtd2FyZWAsIGBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYHVwZGF0ZV9lZGdlcG9ydF9FMlBST01gLCBgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZWAsIGB6aWlyYXZlX2Zpcm1fdmVyaWZ5YCwgYHppaXJhdmVfZmlybV91cGxvYWRgLCBhbmQgYHpsMzhfbG9hZF9maXJtd2FyZWAuCgpIb2xkIG9uLCBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBNeSBpZGVhbCBmdXp6aW5nIHRhcmdldHMgYXJlIGdvaW5nIHRvIGJlIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCYjMzk7cyBob3cgSSYjMzk7bGwgbWF4aW1pemUgdGhlIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIHZ1bG5lcmFiaWxpdGllcyBmcm9tIGV4dGVybmFsIGlucHV0LiBTbywgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRocm91Z2ggdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB0aG9zZSBlbnRyeSBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTk0MD1zdGF0aWMgaW50IGltc19wY3VfaGFuZGxlX2Zpcm13YXJlX3VwZGF0ZShzdHJ1Y3QgaW1zX3BjdSAqcGN1LFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTY2LVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzo5Njc6c3RhdGljIHZvaWQgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqX2Z3LFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05NjgtXHRcdFx0XHRcdCAgIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMDUzPXN0YXRpYyBpbnQgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZShzdHJ1Y3QgaW1zX3BjdSAqcGN1KVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtMjA4MS1cdFx0XHRcdFx0cGN1LVx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgcGN1LFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMDgyOlx0XHRcdFx0XHRpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmUpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgzLVx0aWYgKGVycm9yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaTI2X2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTMyPXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzozMzpzdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTM0LXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTU3PXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtNzAtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6NzE6c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTcyLXtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MjI2PXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMjMxLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjIzMjpcdGVtaTI2X2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0yMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaTYyX2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTQxPXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzo0MjpzdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTQzLXN0YXRpYyBpbnQgZW1pNjJfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTY2PXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNzgtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6Nzk6c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTgwLXtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9MjM4PXN0YXRpYyBpbnQgZW1pNjJfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMjQ0LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjI0NTpcdGVtaTYyX2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0yNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4MV9zZXRfcmVzZXQpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTU3LVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjU4OnN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTU5LVx0XHRcdFx0XHRzdHJ1Y3QgZXp1c2JfZnhfdHlwZSBmeCxcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9MTIwPWludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMjIte1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjEyMzpcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngxLCBmaXJtd2FyZV9wYXRoKTtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMjQtfVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDM9aW50IGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0NS17XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ2Olx0cmV0dXJuIGV6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQoZGV2LCBlenVzYl9meDIsIGZpcm13YXJlX3BhdGgpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VwZGF0ZV9lZGdlcG9ydF9FMlBST00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9Mjk0PXN0YXRpYyBpbnQgcm9tX3dyaXRlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsIF9fdTE2IGV4dEFkZHIsIF9fdTE2IGFkZHIsXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzAzLSAqXHRcdFx0XHRcdFx0XHRcdFx0KlxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzA0OiAqIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oKVx0Q29tcGFyZSBjdXJyZW50IHZlcnNpb25zIG9mXHRcdCpcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMwNS0gKlx0XHRcdFx0Qm9vdCBST00gYW5kIE1hbnVmYWN0dXJlIFx0XHQqXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzA5LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMTA6c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMxMS17XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjcwND1zdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzQtXHRcdC8qIENoZWNrIGN1cnJlbnQgRWRnZXBvcnQgRUVQUk9NIGFuZCB1cGRhdGUgaWYgbmVjZXNzYXJ5ICovXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNzc1Olx0XHR1cGRhdGVfZWRnZXBvcnRfRTJQUk9NKGVkZ2Vfc2VyaWFsKTtcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xvYWRfYXBwbGljYXRpb25fZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjU4Nz1zdGF0aWMgdm9pZCBnZXRfYm9vdF9kZXNjKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjMtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2MjQ6ICogbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjYyNS0gKlx0VGhpcyBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgdG8gdGhlIGRldmljZVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjYyNi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2Mjc6c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2Mjgte1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI3MDQ9c3RhdGljIGludCBlZGdlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNzY5LVx0XHQvKiBub3cgbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgaW50byB0aGlzIGRldmljZSAqL1xuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6Mjc3MDpcdFx0bG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShlZGdlX3NlcmlhbCk7XG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNzcxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc4MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIERldmljZSBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMuIFdlJiMzOTt2ZSBnb3QgYSB2YXJpZXR5IG9mIHRoZW0gaGVyZSwgc2VlbWluZ2x5IHNwYW5uaW5nIGRpZmZlcmVudCBVU0IgZGV2aWNlIGNsYXNzZXMuIEZpcnN0LCBJIHNlZSBgZW1pMjZfcHJvYmVgIGFuZCBgZW1pNjJfcHJvYmVgIGluIHRoZSBgZW1pMjYuY2AgYW5kIGBlbWk2Mi5jYCBkcml2ZXJzLCByZXNwZWN0aXZlbHksIHdoaWNoIGxpa2VseSBoYW5kbGUgc29tZSBjdXN0b20gRU1JIGRldmljZXMuIFRoZW4sIHdlIGhhdmUgdGhlIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYW5kIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgZnVuY3Rpb25zIGluIGBlenVzYi5jYC4gR2l2ZW4gdGhlaXIgbmFtZXMsIHRob3NlIGFyZSBmaXJtd2FyZSBkb3dubG9hZCByb3V0aW5lcyBmb3IgQ3lwcmVzcyBFWi1VU0IgRlgxIGFuZCBGWDIgZGV2aWNlcywgcHJvYmFibHkgY3J1Y2lhbCBmb3IgYnJpbmdpbmcgdXAgZGV2aWNlcyB1c2luZyB0aG9zZSBjaGlwcy4KCk5leHQgdXAsIGBlZGdlX3N0YXJ0dXBgIGluIHRoZSBgaW9fZWRnZXBvcnQuY2AgZmlsZSBoYXMgY2F1Z2h0IG15IGV5ZSAtIHRoaXMgc2VlbXMgcmVsYXRlZCB0byBpbml0aWFsaXphdGlvbiBvciBhIGRldmljZS1zcGVjaWZpYyBzdGFydHVwIHJvdXRpbmUgd2l0aGluIHRoZSBFZGdlcG9ydCBzZXJpYWwgZHJpdmVyLiBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZWAgYW5kIGl0cyBwYXJlbnQgYGltc19wY3VfcHJvYmVgIGluIGBpbXMtcGN1LmNgLiBTaW5jZSBgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZWAgaXMgY2FsbGVkIGJ5IGBpbXNfcGN1X3Byb2JlYCwgSSBrbm93IHRoYXQgYGltc19wY3VfcHJvYmVgIGhhcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gaG93IGBpbXNfcGN1X3Byb2JlYCBmdW5jdGlvbnMsIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBib290bG9hZGVyIG1vZGUgaW5pdGlhbGl6YXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM9MjEwMD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgaW1zX3BjdV9kcml2ZXI7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTIxMDEtXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjIxMDI6c3RhdGljIGludCBpbXNfcGN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAzLVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMjQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBpbXNfcGN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTIyNDctXHQuZGV2X2dyb3Vwc1x0XHQ9IGltc19wY3Vfc3lzZnNfZ3JvdXBzLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMjQ4Olx0LnByb2JlXHRcdFx0PSBpbXNfcGN1X3Byb2JlLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMjQ5LVx0LmRpc2Nvbm5lY3RcdFx0PSBpbXNfcGN1X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCBydW5kb3duOgoKKipJZGVudGlmeWluZyBLZXkgRW50cnkgUG9pbnRzICZhbXA7IERlcGVuZGVuY3kgQW5hbHlzaXMqKgoKUmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB3ZSBuZWVkIHRvIGNvbmNlbnRyYXRlIG9uLiBNeSBpbml0aWFsIGxpc3QgaW5jbHVkZXM6IGBlbWkyNl9wcm9iZWAsIGBlbWk2Ml9wcm9iZWAsIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAsIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAsIGBlZGdlX3N0YXJ0dXBgLCBhbmQgYGltc19wY3VfcHJvYmVgLiBTZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBjb21wcmVoZW5zaXZlIHJldmlldy4KCk5vdywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEl0JiMzOTtzIGEgaHVuY2ggYmFzZWQgb24gZXhwZXJpZW5jZS4gSSBuZWVkIHRvIHNlZSBpZiBhbnkgb3RoZXIgZHJpdmVycyBpbiB0aGUgc3lzdGVtIGFyZSBwb3RlbnRpYWxseSBsZXZlcmFnaW5nIGVpdGhlciBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIG9yIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggaXMgdml0YWwgZm9yIGF2b2lkaW5nIHVuZXhwZWN0ZWQgc2lkZS1lZmZlY3RzIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnkgaW50ZXJjb25uZWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU4PXN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMTktXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTIwOmludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyMS1cdFx0XHRcdCAgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxMjU6RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyNi1cbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTE2MDU9c3RhdGljIGludCBrZXlzcGFuX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMTY3Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmM6MTY3NzpcdGlmIChlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzZXJpYWwtXHUwMDNlZGV2LCBmd19uYW1lKSBcdTAwM2MgMCkge1xuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjc4LVx0XHRkZXZfZXJyKFx1MDAyNnNlcmlhbC1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM9NjM2PXN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjU3LVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjU4Olx0aWYgKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cdTAwM2VkZXYsIGZ3X25hbWUpIFx1MDAzYyAwKSB7XG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy02NTktXHRcdGRldl9lcnIoXHUwMDI2c2VyaWFsLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFxcXCYjMzQ7JXNcXFwmIzM0O1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTgzPXN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4Ny1cbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxODg6XHRyZXNwb25zZSA9IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cdTAwM2VkZXYsIFwmIzM0O3doaXRlaGVhdF9sb2FkZXIuZndcJiMzNDspO1xuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4OS1cdGlmIChyZXNwb25zZSBcdTAwM2U9IDApIHtcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxOTA6XHRcdHJlc3BvbnNlID0gZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVx1MDAzZWRldiwgXCYjMzQ7d2hpdGVoZWF0LmZ3XCYjMzQ7KTtcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xOTEtXHRcdGlmIChyZXNwb25zZSBcdTAwM2U9IDApXG4tLVxuaW5jbHVkZS9saW51eC91c2IvZXp1c2IuaD01PWV4dGVybiBpbnQgZXp1c2JfZngxX3NldF9yZXNldChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdCk7XG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oOjY6ZXh0ZXJuIGludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuaW5jbHVkZS9saW51eC91c2IvZXp1c2IuaC03LVx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDE9RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngyX3NldF9yZXNldCk7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQyLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjE0MzppbnQgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDQtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlX3BhdGgpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0Ny19XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ4OkVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKTtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDktI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTMwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGaXJtd2FyZSBEb3dubG9hZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQgdmlhIFVTQiwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlc2UgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGluIGBrZXlzcGFuLmNgLCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCBpbiBga2V5c3Bhbl9wZGEuY2AsIGFuZCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpbiBgd2hpdGVoZWF0LmNgLiBNYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBjb21tb24gZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20gZm9yIHRob3NlIHR5cGVzIG9mIGRldmljZXMuIEkmIzM5O2xsIGZvY3VzIG9uIGB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRgIGZvciBub3cuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IG9uZSBhbmQgc2VlIGhvdyBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQsIGFuZCBob3cgaXQgbGV2ZXJhZ2VzIHRoaXMgY29tbW9uIGRvd25sb2FkIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jPTYyPU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZV9jb21iaW5lZCk7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY1LS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBDb25uZWN0IFRlY2ggV2hpdGVIRUFUIHByZXJlbnVtZXJhdGlvbiBkZXZpY2UgKi9cbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzo2NjpzdGF0aWMgaW50ICB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy02Ny1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9ODg9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciB3aGl0ZWhlYXRfZmFrZV9kZXZpY2UgPSB7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTk0LVx0Lm51bV9wb3J0cyA9XHRcdDEsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6OTU6XHQucHJvYmUgPVx0XHR3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtOTYtXHQuYXR0YWNoID1cdFx0d2hpdGVoZWF0X2Zpcm13YXJlX2F0dGFjaCxcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTU4PXN0YXRpYyBpbnQgZmlybV9yZXBvcnRfdHhfZG9uZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtMTgyLSovXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTgzOnN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtMTg0LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTg5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUmVmbGVjdGluZyBvbiB0aGUgd2hpdGVoZWF0IEZpcm13YXJlIERvd25sb2FkIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gcHJvY2Vzc2luZyB0aGlzLiBJdCBsb29rcyBsaWtlIGB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRgIGlzIGFjdGluZyBhcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgd2hpdGVoZWF0X2Zha2VfZGV2aWNlYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBvdXIgb3ZlcmFsbCBzdHJhdGVneS4gTm93IHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcm9sZXMgYW5kIGNvbm5lY3Rpb25zLCB0aGUgbmV4dCBpbW1lZGlhdGUgYWN0aW9uIGl0ZW0gaXMgdG8gYWRkIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAgdG8gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gbGlzdC4gSXQmIzM5O3MgYSBrZXkgcGllY2UgdG8gbWFrZSB0aGUgZG93bmxvYWQgcHJvY2VzcyB3b3JrLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIGRldmljZSBwcm9wZXJseSBhbmQgZW5zdXJlIGl0IGNhbiBiZSB1cGRhdGVkIHRocm91Z2ggb3VyIHN0YW5kYXJkIG1ldGhvZHMuIEl0JiMzOTtzIGEgc2VlbWluZ2x5IHNtYWxsIHN0ZXAsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCB0aGlzIGNvbmZpZyBsaXN0IHVwZGF0ZWQsIGFzIGEgZmFpbHVyZSBvbiB0aGlzIHBpZWNlIGNhbiBsZWFkIHRvIHRpbWUtY29uc3VtaW5nIHByb2JsZW1zIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0xMDY9Y29uZmlnIFVTQl9TRVJJQUxfQ0gzNDFcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxMTU6Y29uZmlnIFVTQl9TRVJJQUxfV0hJVEVIRUFUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5MjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAgLSB3aGF04oCZcyByZWx5aW5nIG9uICp0aGlzKj8mIzM0OyBJIGtub3cgdGhlIG5hbWUsIEkmIzM5O3ZlIGxpa2VseSBzZWVuIGl0IGluIHRoZSBjb2RlYmFzZSAob3IgZXZlbiB3cml0dGVuIGl0ISkuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcHVsbCB1cCB0aGUgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIG1vZHVsZSBzaXRzIGluIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgdHJhY2sgZG93biB0aG9zZSBkZXBlbmRlbmNpZXMuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSBuZWVkIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGV5IGFyZS4gSXMgdGhpcyBhIGNvcmUgcGllY2Ugb2Ygc29tZSBsYXJnZXIgYWJzdHJhY3Rpb24gb3IganVzdCBhIGxvdy1sZXZlbCBwZXJpcGhlcmFsIGRyaXZlcj8gVGhlIGFuc3dlcnMgZGljdGF0ZSBteSBhcHByb2FjaCB0byBhbnkgcG90ZW50aWFsIGNoYW5nZXMgb3IgdHJvdWJsZXNob290aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDExNzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAxMTg6XHRcdGhlbHBcbiAxMTk6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgNCBwb3J0XG4gMTIwOlx0XHQgIFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTIzOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB3aGl0ZWhlYXQuXG4gMTI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzIyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIERldmljZSBTZWxlY3Rpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBubyBleHRlcm5hbCBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgdGhhdCYjMzk7cyBnb29kLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIFVTQiBkZXZpY2UuIEJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBVU0JfRVpVU0JfRlgyYCBpcyB0aGUgZGV2aWNlIG9mIGNob2ljZS4gTm93LCB0byB2ZXJpZnkgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhcnR1cCBzZXF1ZW5jZXMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGJlZ2lucyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgaGFyZHdhcmUgaW4gYm90aCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tleXNwYW5fZmFrZV9zdGFydHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmM9MTU4MD1zdGF0aWMgdm9pZCBrZXlzcGFuX2Nsb3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA0LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIHByZS1yZW51bWVyYXRpb24gZGV2aWNlICovXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjE2MDU6c3RhdGljIGludCBrZXlzcGFuX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA2LXtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTMwMDQ9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBrZXlzcGFuX3ByZV9kZXZpY2UgPSB7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0zMDEwLVx0Lm51bV9wb3J0c1x0XHQ9IDEsXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjMwMTE6XHQuYXR0YWNoXHRcdFx0PSBrZXlzcGFuX2Zha2Vfc3RhcnR1cCxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMzAxMi19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM9NjE3PXN0YXRpYyB2b2lkIGtleXNwYW5fcGRhX2Nsb3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM1LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIFwmIzM0O2Zha2VcJiMzNDsgZGV2aWNlIChwcmUtcmVudW1lcmF0aW9uKSAqL1xuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjM2OnN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy02Mzcte1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTcwMT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIGtleXNwYW5fcGRhX2Zha2VfZGV2aWNlID0ge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTcwNy1cdC5udW1fcG9ydHMgPVx0XHQxLFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NzA4Olx0LmF0dGFjaCA9XHRcdGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cCxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTcwOS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTAzNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJZGVudGlmeWluZyBLZXkgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBzeXN0ZW1zLCBhbmQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuIEkgc2VlIHNldmVyYWwgcG90ZW50aWFsbHkgcmVsZXZhbnQgb25lczogYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRWFjaCBvZiB0aGVzZSBzdWdnZXN0cyBhIGRpZmZlcmVudCBtZWNoYW5pc20gZm9yIGluaXRpYWxpemF0aW9uIG9yIGludGVyYWN0aW9uLiBHaXZlbiB3aGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSwgYSBxdWljayBjaGVjayBvZiBgdmljYW1gIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBhbmQgd2hlcmUgaXQmIzM5O3MgYWN0aXZhdGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRob3NlIGVudHJ5IHBvaW50cyBnaXZlIGEgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0xNjc9c3RhdGljIHZvaWQgdmljYW1fZG9zdHJlYW0oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA0LVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyMDU6LyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgdGltZSBqdXN0IGJlZm9yZSBzZF9pbml0ICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTIwNi1zdGF0aWMgaW50IHNkX2NvbmZpZyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjMtLyogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgYW5kIHJlc3VtZSB0aW1lICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjIyNDpzdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjUte1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MjgwPXN0YXRpYyB2b2lkIHNkX3N0b3AwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5My1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6Mjk0OnN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5NS17XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0zMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBzZF9kZXNjIHNkX2Rlc2MgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMjQtXHQuY29uZmlnID0gc2RfY29uZmlnLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjU6XHQuaW5pdCAgID0gc2RfaW5pdCxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MzI2Olx0LmluaXRfY29udHJvbHMgPSBzZF9pbml0X2NvbnRyb2xzLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMjctXHQuc3RhcnQgID0gc2Rfc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpc3NlY3RpbmcgdGhlIGdzcGNhIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZ3NwY2EgZHJpdmVyLCBhbmQgSSYjMzk7dmUgdHJhY2VkIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhlIHZpY2FtIGRldmljZS4gYHNkX2luaXRgIGlzIGNsZWFybHkgdGhlIGtleSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHZpZGVvIGRldmljZSwgYW5kIEkgc2VlIHRoYXQgYGdzcGNhX2Rldl9wcm9iZTJgIGlzIHRoZSBvbmUgY2FsbGluZyBpdC4gVGhhdCYjMzk7cyBpbiB0aGUgYGdzcGNhLmNgIGZpbGUg4oCTIG1ha2VzIHNlbnNlLCB0aGUgY29yZSBvZiB0aGUgZ3NwY2EgZnJhbWV3b3JrLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBzZF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGRlZmluZWQgZm9yIHZpY2FtLiBUaGlzIGxpa2VseSBzZXRzIHVwIHRoZSBkZXZpY2UmIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBhIG1hdGNoIHRvIGEgVklEL1BJRCBvciBvdGhlciBVU0IgZGVzY3JpcHRvciBjcml0ZXJpYS4gU28gYHNkX3Byb2JlYCBpcyBwcm9iYWJseSBjYWxsaW5nIGBzZF9pbml0YCB0byBraWNrIHRoaW5ncyBvZmYgYWZ0ZXIgdGhlIGluaXRpYWwgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBzZXR0aW5nIHVwIGJ1ZmZlcnMsIGV0Yy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RfZGVzYyBzZF9kZXNjID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzMxLS8qIC0tIGRldmljZSBjb25uZWN0IC0tICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjMzMjpzdGF0aWMgaW50IHNkX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMzMtXHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc2RfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzQzLVx0LmlkX3RhYmxlICAgPSBkZXZpY2VfdGFibGUsXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjM0NDpcdC5wcm9iZSAgICAgID0gc2RfcHJvYmUsXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTM0NS1cdC5kaXNjb25uZWN0ID0gZ3NwY2FfZGlzY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzODYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBDYW1lcmEgRHJpdmVyIEVudHJ5IFBvaW50ICZhbXA7IFdEVCBDb25zaWRlcmF0aW9uKioKCkFscmlnaHQsIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50IHRvIGV4YW1pbmUg4oCTIGBzZF9wcm9iZWAgaW4gYGRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmNgLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gaWRlbnRpZnkgYWxsIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnRzIHdoZW4geW91JiMzOTtyZSBkaWdnaW5nIGludG8gYSBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgdG8gZm9sbG93IHRoZSBleGVjdXRpb24gZmxvdy4KCk5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCBgemlpcmF2ZV93ZHQuY2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlbGF0ZWQgdG8gd2F0Y2hkb2cgdGltZXIgZnVuY3Rpb25hbGl0eSwgcGVyaGFwcyB1c2VkIGZvciBlbnN1cmluZyB0aGUgY2FtZXJhIHJlbWFpbnMgcmVzcG9uc2l2ZSBvciBmb3IgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucy4gV2UgYXJlIGFzc3VtaW5nIGEgZGlyZWN0IGNvbm5lY3Rpb24sIG9yIGEgY29tcG9uZW50IG9mIHN1Y2ggYSBjb25uZWN0aW9uLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgaGFyZHdhcmUgZmFpbHVyZXMgYXJlIGhhbmRsZWQsIG9yIHRoZSBnZW5lcmFsIHN0YWJpbGl0eSBvZiBhIHN5c3RlbSwgc28gdGhpcyBpcyBhIGtleSBhcmVhIHRvIGFzc2Vzcy4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgb3ZlcmxhcCBvciBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBjYW1lcmEgZHJpdmVyIGFuZCB0aGUgd2F0Y2hkb2cgbWVjaGFuaXNtOyB0aGF0IGNvdWxkIGJlIHJlYWxseSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emlpcmF2ZV9maXJtX3ZlcmlmeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjY5PXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3dyaXRlX3BrdChzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5Mi1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzoyOTM6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0yOTQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTM0MD1zdGF0aWMgaW50IHppaXJhdmVfZmlybV91cGxvYWQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTEtXHQvKiBTdGFydCBmaXJtd2FyZSB2ZXJpZmljYXRpb24gKi9cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozOTI6XHRyZXQgPSB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHdkZCwgZncpO1xuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emlpcmF2ZV9maXJtX3VwbG9hZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMzOS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNDA6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zNDEtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTUwNj1zdGF0aWMgc3NpemVfdCB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtNTI0LVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjUyNTpcdGVyciA9IHppaXJhdmVfZmlybV91cGxvYWQoXHUwMDI2d19wcml2LVx1MDAzZXdkZCwgZncpO1xuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTUyNi1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMTUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIFN0b3JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtYCwgdGhhdCYjMzk7cyBhIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uLCBnb3QgaXQuIFJpZ2h0LCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBnb2luZyB0byBiZSB0cmlnZ2VyZWQgd2hlbmV2ZXIgc29tZW9uZSB3cml0ZXMgdG8gYSBzcGVjaWZpYyBzeXNmcyBmaWxlLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHN5c2ZzIGZpbGVzIHRoZW1zZWx2ZXMgYXJlIHRhcmdldHMgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgdGhpcyBmdW5jdGlvbiB3aXRoIGNyYWZ0ZWQgaW5wdXQuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgemwzODA2MC5jYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDM4X2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTUxPXN0YXRpYyBpbnQgemwzOF9md19zZW5kX3hhZGRyKHN0cnVjdCByZWdtYXAgKnJlZ21hcCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNjEtXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoxNjI6c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNjMte1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTU1Mj1zdGF0aWMgaW50IHpsMzhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTgyLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM6NTgzOlx0ZXJyID0gemwzOF9sb2FkX2Zpcm13YXJlKGRldiwgcHJpdi1cdTAwM2VyZWdtYXApO1xuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTg0LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MzAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIHpsMzhfc3BpX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB6bDM4X3NwaV9wcm9iZWAgaXMgY2xlYXJseSB0aGUgcHJvYmUgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGZvciB0aGUgYHpsMzgwNjBgIGRldmljZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50IOKAkyBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIgdG8gYmUgaW5pdGlhbGl6ZWQsIGxpa2VseSBoYW5kbGluZyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsIHNldHVwLiBOb3csIHNpbmNlIGl0IHJlbGF0ZXMgdG8gU1BJLCBteSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgaWxpMjEweC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwYXJhbGxlbHMgd2l0aCB0aGUgemwzODA2MCBzZXR1cC4gTWF5YmUgdGhlcmUmIzM5O3Mgc29tZSBkZXNpZ24gZWxlbWVudCBvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSBjYW4gZ2xlYW4gZm9yIHVzZSBpbiB0aGUgemwzODA2MCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbGkyNTF4X2Zpcm13YXJlX3RvX2J1ZmZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz01OTU9c3RhdGljIERFVklDRV9BVFRSKGNhbGlicmF0ZSwgU19JV1VTUiwgTlVMTCwgaWxpMjEweF9jYWxpYnJhdGUpO1xuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk2LVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM6NTk3OnN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTU5OC1cdFx0XHRcdFx0ICAgIHUxNiAqYWNfZW5kLCB1MTYgKmRmX2VuZClcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg4Mi1cdGNvbnN0IHU4KiBmd2J1ZiBfX2ZyZWUoa3ZmcmVlKSA9XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo4ODM6XHRcdFx0aWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoZncsIFx1MDAyNmFjX2VuZCwgXHUwMDI2ZGZfZW5kKTtcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg4NC1cdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKGZ3YnVmKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyOTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmluaW5nIHRoZSBUYXJnZXQgTGlzdCBmb3IgRmlybXdhcmUgVXBkYXRlIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlYCwgd2hpY2ggSSBrbm93IGlzIGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24uICBUaGlzIG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzIGludG8gdGhlIGZpcm13YXJlIHVwZGF0ZSBwcm9jZXNzLiAgSSB3YXMgaW5pdGlhbGx5IGdpdmVuIGEgbGlzdCBvZiBwb3NzaWJpbGl0aWVzLCBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgLCBgc2RfcHJvYmVgIChpbiBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2ApLCBgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybWAsIGB6bDM4X3NwaV9wcm9iZWAsIGFuZCB0aGUgaW5pdGlhbCBmb2N1cywgYGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlYCBpdHNlbGYuCgpJIHJlYWxpemVkIEkgZG9uJiMzOTt0IG5lZWQgKmFsbCogb2YgdGhlbSwganVzdCBhIGdvb2Qgc2VsZWN0aW9uLiBTbyBJIHN0YXJ0ZWQgd2l0aCBhIHNlbGVjdGlvbjogdGhlIGZpcnN0IHNldCBvZiB0aG9zZSBsaXN0ZWQuCgpOb3csIEkgbmVlZCB0byBiZSBzdHJhdGVnaWMuICBJIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMgYXMgZW50cnkgcG9pbnRzLCBzaW5jZSB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUHJvYmUgZnVuY3Rpb25zLCBmb3IgaW5zdGFuY2UsIGFyZSB1c3VhbGx5IHN0YXRpYywgYnV0IG5vdCBpbmxpbmVkLCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gZm9yIHJlZ2lzdHJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBsaW5rYWdlIHRvIHByb3ZpZGUgZ29vZCBzZWxlY3Rpb24uCgpJIG1hZGUgYSBub3RlIHRoYXQgYHNkX3Byb2JlYCBpcyBhIGdlbmVyaWMgbmFtZSBhbmQgY2hlY2tlZCB0byBzZWUgaWYgaXQmIzM5O3Mgc3RhdGljLiBJdCBpcywgaW4gYHZpY2FtLmNgLiBXaGlsZSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSB0YXJnZXRlZCwgSSB3YW50IHRvIHByaW9yaXRpemUgdGhlIG5vbi1zdGF0aWMgb25lcyBpZiBwb3NzaWJsZSwgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMuCgpJIHRoZW4gaWRlbnRpZmllZCBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFuZCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFzIGV4cG9ydGVkIHN5bWJvbHMsIHNvIHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMuICBJIGFsc28gZm91bmQgdGhhdCBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCwgYGloZXhfdmFsaWRhdGVfZndgLCBhbmQgYGloZXhfbmV4dF9iaW5yZWNgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBJIHJlbW92ZWQgdGhlbSBmcm9tIGNvbnNpZGVyYXRpb24uCgpUaGVyZWZvcmUsIG15IGJlc3QgdGFyZ2V0cyBhcmU6Ci0gICBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgCi0gICBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgCi0gICBgZW1pMjZfcHJvYmVgCi0gICBgZW1pNjJfcHJvYmVgCi0gICBgZWRnZV9zdGFydHVwYAotICAgYGltc19wY3VfcHJvYmVgCi0gICBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYAotICAgYGtleXNwYW5fZmFrZV9zdGFydHVwYAotICAgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGAKCkkgZG91YmxlLWNoZWNrZWQgYGVtaTI2X3Byb2JlYCBhbmQgaXQgKmlzKiBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBsaXN0IGp1c3QgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFuZCBhIGZldyBpbXBvcnRhbnQgc3RhdGljIHByb2JlIGZ1bmN0aW9ucy4KCk5leHQsIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9ucy4gVGhlIGNvbmZpZ3MgSSBoYXZlIGFyZTogYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEkgcmVtZW1iZXIgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBgVVNCX0dTUENBX1ZJQ0FNYCBkZXBlbmRzIG9uIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4KClRoZSBpbnN0cnVjdGlvbnMgc3RhdGUgdG8gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZCBmb3IgdGhlIGNvZGUgdG8gY29tcGlsZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gIGBWSURFT19ERVZgIGlzIHN0YW5kYXJkLCBidXQgYFVTQl9HU1BDQWAgaXMgYSBzdWJzeXN0ZW0uCgpJJiMzOTttIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSBvbmVzIHdpdGggbm8gb3Igc2ltcGxlIGRlcGVuZGVuY2llczoKLSAgIGBJTlBVVF9JTVNfUENVYCAoZGVwZW5kcyBvbiBgVVNCYCwgYExFRFNfQ0xBU1NgKQotICAgYFVTQl9FTUkyNmAKLSAgIGBVU0JfRU1JNjJgCi0gICBgVVNCX1NFUklBTF9FREdFUE9SVGAKLSAgIGBVU0JfU0VSSUFMX0tFWVNQQU5gCi0gICBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAKLSAgIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAKCkkgY2hlY2tlZCBgTEVEU19DTEFTU2AsIHdoaWNoIGlzIHN0YW5kYXJkLgoKSSB3aWxsIGFsc28gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFVTQl9TRVJJQUxfS0VZU1BBTmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMjpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbiAzMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuIDMxNDpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMTU6XHRcdGhlbHBcbiAzMTY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgS2V5c3BhbiBVU0IgdG8gc2VyaWFsIGNvbnZlcnRlclxuIDMxNzpcdFx0ICBkZXZpY2VzLiAgVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mIEtleXNwYW4mIzM5O3Mgb2ZmaWNpYWwgZmlybXdhcmVcbiAzMTg6XHRcdCAgYW5kIHdhcyBkZXZlbG9wZWQgd2l0aCB0aGVpciBzdXBwb3J0LiAgWW91IG11c3QgYWxzbyBpbmNsdWRlXG4gMzE5Olx0XHQgIGZpcm13YXJlIHRvIHN1cHBvcnQgeW91ciBwYXJ0aWN1bGFyIGRldmljZShzKS5cbiAzMjA6XHRcbiAzMjE6XHRcdCAgU2VlIFx1MDAzY2h0dHA6Ly9ibGVtaW5ncy5vcmcvaHVnaC9rZXlzcGFuLmh0bWxcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IFVTQiBTZXJpYWwgS2V5U3BhbiBQREEqKgoKUmlnaHQsIG5vIGluaXRpYWwgZGVwZW5kZW5jaWVzIGxlYXBpbmcgb3V0IGF0IG1lLiBBbHdheXMgYSBnb29kIHNpZ24uIExldCYjMzk7cyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcywgdGhvdWdoLiBUaW1lIHRvIGRyaWxsIGRvd24uIFRoZSBmaXJzdCBwb3J0IG9mIGNhbGwsIG5hdHVyYWxseSwgaXMgdG8gcmlnb3JvdXNseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyBhcmUuIEdvdHRhIGVuc3VyZSB0aGVyZSBhcmUgbm8gaGlkZGVuIGdvdGNoYXMgb3IgY29uZmxpY3RzIGx1cmtpbmcgYmVuZWF0aCB0aGUgc3VyZmFjZS4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgaXRzIGJ1aWxkIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMTpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5fUERBXG4gMzAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDMwMzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMDQ6XHRcdGhlbHBcbiAzMDU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBLZXlzcGFuIFBEQSwgWGlyY29tIG9yIEVudHJlZ2Egc2luZ2xlXG4gMzA2Olx0XHQgIHBvcnQgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLiBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2ZcbiAzMDc6XHRcdCAgZmlybXdhcmUgZGV2ZWxvcGVkIGZyb20gc2NyYXRjaCBieSBCcmlhbiBXYXJuZXIuXG4gMzA4Olx0XG4gMzA5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDMxMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODcxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IEEgUHJlcmVxdWlzaXRlKioKCkFscmlnaHQsIG5vIGltbWVkaWF0ZSBzaG93c3RvcHBlcnMgZmxhZ2dlZCBpbml0aWFsbHkuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gaXMgdmVyaWZ5IGRlcGVuZGVuY2llcyBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBObyBhc3N1bXB0aW9ucy4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAuIFVuZGVyc3RhbmQgd2hhdCBpcyBsaW5rZWQgdG8gdGhpcyBtb2R1bGUgdG8gYXZvaWQgYnJlYWtpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRpZWQgaW50byB0aGF0LiBHb3R0YSBrbm93IHdoZXJlIHdlIHN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDExNzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAxMTg6XHRcdGhlbHBcbiAxMTk6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgNCBwb3J0XG4gMTIwOlx0XHQgIFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTIzOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB3aGl0ZWhlYXQuXG4gMTI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjA2CgkJCQkJCQlvdXRwdXQ6IDMwOQoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBQbGFuOiBVU0IgRmlybXdhcmUgUGFyc2luZyBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTm8gZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBnb29kIOKAkyBpdCBtYWtlcyB0aGluZ3Mgc2ltcGxlci4gRXNzZW50aWFsbHksIHRoZSBjb3JlIHByb2JsZW0gaXMgcmVsYXRlZCB0byBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgYW4gaW5maW5pdGUgbG9vcCB3aXRoaW4gdGhlIEludGVsIEhFWCBmaXJtd2FyZSBwYXJzaW5nIHJvdXRpbmVzLCBzcGVjaWZpY2FsbHkgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGFyZSBjcnVjaWFsIGZvciBhIGhhbmRmdWwgb2YgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgdGhlaXIgZmlybXdhcmUuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgYW5kIHBhc3MgdGhlbSB2aWEgYHJlcXVlc3RfZmlybXdhcmVgLgoKU28sIHRoZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gdG8gZW5hYmxlIGFuZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgdnVsbmVyYWJpbGl0eSBhcmU6IGBJTlBVVF9JTVNfUENVYCwgYExFRFNfQ0xBU1NgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYW5kIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAuIFRoZXNlIGVuYWJsZSB0aGUgdGFyZ2V0IFVTQiBkcml2ZXJzLgoKTm93LCByZWdhcmRpbmcgdGhlIGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBuZWVkIG15IGF0dGVudGlvbiwgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSB0aGUgcHJvYmUgYW5kIHN0YXJ0dXAgZnVuY3Rpb25zIGZvciB0aGUgYWZvcmVtZW50aW9uZWQgVVNCIGRyaXZlcnMsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24gaGFwcGVuLiBIZXJlJiMzOTtzIGEgcnVuZG93bjogYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRnV6emluZyB0aGVzZSBzaG91bGQgYmUgYSBnb29kIHBsYW4gdG8gZXhlcmNpc2UgdGhlIHZ1bG5lcmFibGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlIHBhdGggdG8gdmFsaWRhdGluZyB0aGlzIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lOUFVUX0lNU19QQ1UmIzM0OywKICAgICYjMzQ7TEVEU19DTEFTUyYjMzQ7LAogICAgJiMzNDtVU0JfRU1JMjYmIzM0OywKICAgICYjMzQ7VVNCX0VNSTYyJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfRURHRVBPUlQmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfS0VZU1BBTl9QREEmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9XSElURUhFQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlbWkyNl9wcm9iZSYjMzQ7LAogICAgJiMzNDtlbWk2Ml9wcm9iZSYjMzQ7LAogICAgJiMzNDtlZGdlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7aW1zX3BjdV9wcm9iZSYjMzQ7LAogICAgJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9mYWtlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5QVVRfSU1TX1BDVSYjMzQ7LAogICAgJiMzNDtMRURTX0NMQVNTJiMzNDssCiAgICAmIzM0O1VTQl9FTUkyNiYjMzQ7LAogICAgJiMzNDtVU0JfRU1JNjImIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX0tFWVNQQU4mIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOX1BEQSYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2VtaTI2X3Byb2JlJiMzNDssCiAgICAmIzM0O2VtaTYyX3Byb2JlJiMzNDssCiAgICAmIzM0O2VkZ2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDssCiAgICAmIzM0O3doaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX2Zha2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTQuNjcyODI4ODcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5MDExMjI3MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklOUFVUX0lNU19QQ1VcIixcbiAgICBcIkxFRFNfQ0xBU1NcIixcbiAgICBcIlVTQl9FTUkyNlwiLFxuICAgIFwiVVNCX0VNSTYyXCIsXG4gICAgXCJVU0JfU0VSSUFMX0VER0VQT1JUXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5cIixcbiAgICBcIlVTQl9TRVJJQUxfS0VZU1BBTl9QREFcIixcbiAgICBcIlVTQl9TRVJJQUxfV0hJVEVIRUFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlbWkyNl9wcm9iZVwiLFxuICAgIFwiZW1pNjJfcHJvYmVcIixcbiAgICBcImVkZ2Vfc3RhcnR1cFwiLFxuICAgIFwiaW1zX3BjdV9wcm9iZVwiLFxuICAgIFwid2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJrZXlzcGFuX2Zha2Vfc3RhcnR1cFwiLFxuICAgIFwia2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNTo1NC42NzI4MzUxMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNjQzNzgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToyNTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2loZXguaCBiL2luY2x1ZGUvbGludXgvaWhleC5oXFxuaW5kZXggYjgyNDg3N2U2ZDFiNi4uNGVlNGI1OTYwZjgyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2loZXguaFxcbisrKyBiL2luY2x1ZGUvbGludXgvaWhleC5oXFxuQEAgLTM4LDkgKzM4LDEzIEBAIF9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG4gc3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxcbiBpaGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxcbiB7XFxuLVxcdHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbitcXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKm5leHQ7XFxuIFxcbi1cXHRyZXR1cm4gYmUxNl90b19jcHUocmVjLVxcdTAwM2VsZW4pID8gcmVjIDogTlVMTDtcXG4rXFx0aWYgKCFiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbikpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0bmV4dCA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbitcXHRyZXR1cm4gYmUxNl90b19jcHUobmV4dC1cXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xcbiB9XFxuIFxcbiAvKiBDaGVjayB0aGF0IGloZXhfbmV4dF9iaW5yZWMoKSB3b24ndCB0YWtlIHVzIG9mZiB0aGUgZW5kIG9mIHRoZSBpbWFnZS4uLiAqL1xcbkBAIC00OCw2ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGloZXhfdmFsaWRhdGVfZncoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKmVuZCwgKnJlYztcXG4gXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqZW5kKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRyZWMgPSAoY29uc3Qgdm9pZCAqKWZ3LVxcdTAwM2VkYXRhO1xcbiBcXHRlbmQgPSAoY29uc3Qgdm9pZCAqKVxcdTAwMjZmdy1cXHUwMDNlZGF0YVtmdy1cXHUwMDNlc2l6ZSAtIHNpemVvZigqZW5kKV07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNTo1NC45OTk5NTE3NjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTg2ODQwOTQzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5QVVRfSU1TX1BDVVwiLFxuICAgIFwiTEVEU19DTEFTU1wiLFxuICAgIFwiVVNCX0VNSTI2XCIsXG4gICAgXCJVU0JfRU1JNjJcIixcbiAgICBcIlVTQl9TRVJJQUxfRURHRVBPUlRcIixcbiAgICBcIlVTQl9TRVJJQUxfS0VZU1BBTlwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOX1BEQVwiLFxuICAgIFwiVVNCX1NFUklBTF9XSElURUhFQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImVtaTI2X3Byb2JlXCIsXG4gICAgXCJlbWk2Ml9wcm9iZVwiLFxuICAgIFwiZWRnZV9zdGFydHVwXCIsXG4gICAgXCJpbXNfcGN1X3Byb2JlXCIsXG4gICAgXCJ3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImtleXNwYW5fZmFrZV9zdGFydHVwXCIsXG4gICAgXCJrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGluZmluaXRlIGxvb3Agd2hlbiBwYXJzaW5nIG1hbGZvcm1lZCBJbnRlbCBIRVggZmlybXdhcmUgZmlsZXMgaW4gYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAgYW5kIGFyZSB1c2VkIGJ5IHNldmVyYWwgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgZmlybXdhcmUuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGNvZGUgYnkgZW11bGF0aW5nIFVTQiBkZXZpY2VzIGFuZCBwcm92aWRpbmcgYXJiaXRyYXJ5IGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbi4gRnV6emluZyB0aGUgcHJvYmUgYW5kIHN0YXJ0dXAgZnVuY3Rpb25zIG9mIHRoZXNlIFVTQiBkcml2ZXJzIHdpbGwgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjI1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9paGV4LmggYi9pbmNsdWRlL2xpbnV4L2loZXguaFxuaW5kZXggYjgyNDg3N2U2ZDFiNi4uNGVlNGI1OTYwZjgyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaWhleC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2loZXguaFxuQEAgLTM4LDkgKzM4LDEzIEBAIF9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcbiBzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqXG4gaWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcbiB7XG4tXHRyZWMgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbitcdGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqbmV4dDtcbiBcbi1cdHJldHVybiBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSA/IHJlYyA6IE5VTEw7XG4rXHRpZiAoIWJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdG5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbitcdHJldHVybiBiZTE2X3RvX2NwdShuZXh0LVx1MDAzZWxlbikgPyBuZXh0IDogTlVMTDtcbiB9XG4gXG4gLyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJ3QgdGFrZSB1cyBvZmYgdGhlIGVuZCBvZiB0aGUgaW1hZ2UuLi4gKi9cbkBAIC00OCw2ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGloZXhfdmFsaWRhdGVfZncoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKmVuZCwgKnJlYztcbiBcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmVuZCkpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0cmVjID0gKGNvbnN0IHZvaWQgKilmdy1cdTAwM2VkYXRhO1xuIFx0ZW5kID0gKGNvbnN0IHZvaWQgKilcdTAwMjZmdy1cdTAwM2VkYXRhW2Z3LVx1MDAzZXNpemUgLSBzaXplb2YoKmVuZCldO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTQuOTk5OTUyOTY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0ODI1Nzk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElIRVggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW5jbHVkZS9saW51eC9paGV4LmhgLCBhbmQgaXQncyB0b3VjaGluZyB0d28gZnVuY3Rpb25zOiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGBpaGV4X25leHRfYmlucmVjYCBoYXMgaGFkIGEgc2FmZXR5IGNoZWNrIGFkZGVkLiBCZWZvcmUgY2FsbGluZyBgX19paGV4X25leHRfYmlucmVjKHJlYylgLCBpdCBub3cgdmVyaWZpZXMgdGhlIGxlbmd0aCwgYHJlYy1cdTAwM2VsZW5gLiBTbWFydCBtb3ZlOyB0aGF0IGNvdWxkIHByZXZlbnQgc29tZSBuYXN0eSBidWZmZXIgb3ZlcmZsb3dzLlxuXG5UaGVuLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHRvIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgYWxsb2NhdGVkIGZpcm13YXJlIHNpemUgKGBmdy1cdTAwM2VzaXplYCkgaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBgZW5kYCByZWNvcmQgYmVmb3JlIHNldHRpbmcgdGhlIGBlbmRgIGFuZCBgcmVjYCBwb2ludGVycy4gVGhpcyBsaWtlbHkgYWltcyB0byBhdm9pZCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuIEl0J3MgYSBwcnVkZW50IGFkZGl0aW9uLCBkZWZpbml0ZWx5IG1ha2VzIHRoZSBjb2RlIG1vcmUgcm9idXN0LlxuXG5Ob3csIG15IG5leHQgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIGFjdHVhbGx5ICp1c2VkKj8gSSBuZWVkIHRvIHNlZSB0aGUgY2FsbCBzaXRlcyB0byBmdWxseSBncmFzcCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgdXNlIG9mIGJvdGggYGloZXhfdmFsaWRhdGVfZndgIGFuZCBgaWhleF9uZXh0X2JpbnJlY2AgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBiZWluZyBhZGRyZXNzZWQgYW5kIHRoZSBvdmVyYWxsIGVmZmVjdCBvbiB0aGUgSUhFWCBwYXJzaW5nIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTkuMjQ4MjE0MjcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTQ4MzM3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWhleF92YWxpZGF0ZV9md1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTk2Nz1zdGF0aWMgdm9pZCBpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICpfZncsXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTk3OS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjk4MDpcXHRlcnJvciA9IGloZXhfdmFsaWRhdGVfZncoZncpO1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTgxLVxcdGlmIChlcnJvcikge1xcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9Mzk9aWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTUwLS8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbid0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6NTE6c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTUyLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTgwLVxcdFxcdHJldHVybiByZXQ7XFxuaW5jbHVkZS9saW51eC9paGV4Lmg6ODE6XFx0cmV0ID0gaWhleF92YWxpZGF0ZV9mdyhsZncpO1xcbmluY2x1ZGUvbGludXgvaWhleC5oLTgyLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MDEuMzQzMDUzMDQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTk2Njg5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWhleF9uZXh0X2JpbnJlY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTgxMD1zdGF0aWMgdW5zaWduZWQgaW50IGltc19wY3VfY291bnRfZndfcmVjb3Jkcyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTYtXFx0XFx0Y291bnQrKztcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjgxNzpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTgtXFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz04Njg9c3RhdGljIGludCBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlKHN0cnVjdCBpbXNfcGN1ICpwY3UsXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTkyNi1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjkyNzpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjgtXFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9NTk3PXN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTYyOC1cXHRcXHRtZW1jcHkoZndfYnVmICsgZndfYWRkciwgcmVjLVxcdTAwM2VkYXRhLCBmd19sZW4pO1xcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjYyOTpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNjMwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MjI0PXN0YXRpYyBpbnQgc2RfaW5pdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI0My1cXHR9XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyNDQ6XFx0Zm9yIChyZWMgPSAodm9pZCAqKWZ3LVxcdTAwM2VkYXRhOyByZWM7IHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKSkge1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQ1LVxcdFxcdGxlbiA9IGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYz03MT1zdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTE2LVxcdFxcdFxcdGdvdG8gd3JhcGVycjtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTE3OlxcdFxcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xMzctXFx0XFx0XFx0aSArPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjEzODpcXHRcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTEzOS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTUxLVxcdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTUyOlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTUzLVxcdFxcdGVyciA9IGVtaTI2X3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNjgtXFx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE2OTpcXHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE3MC1cXHRcXHRpZiAoIUlOVEVSTkFMX1JBTShiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpKSkge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE4NC1cXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTg1OlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg2LVxcdFxcdGlmIChJTlRFUk5BTF9SQU0oYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSkpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz03OT1zdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTIzLVxcdFxcdFxcdGdvdG8gd3JhcGVycjtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTI0OlxcdFxcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTI1LVxcdH1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNDQtXFx0XFx0XFx0aSArPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE0NTpcXHRcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE0Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTU4LVxcdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTU5OlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTYwLVxcdFxcdGVyciA9IGVtaTYyX3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzUtXFx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE3NjpcXHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE3Ny1cXHRcXHRpZiAoIUlOVEVSTkFMX1JBTShiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpKSkge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE5MS1cXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTkyOlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkzLVxcdFxcdGlmIChJTlRFUk5BTF9SQU0oYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSkpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz01OD1zdGF0aWMgaW50IGV6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy03OC1cXHRyZWNvcmQgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmUtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjc5OlxcdGZvciAoOyByZWNvcmQ7IHJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKSkge1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy04MC1cXHRcXHRpZiAoYmUzMl90b19jcHUocmVjb3JkLVxcdTAwM2VhZGRyKSBcXHUwMDNlIGZ4Lm1heF9pbnRlcm5hbF9hZHJlc3MpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy05OC1cXHRyZWNvcmQgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmUtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjk5OlxcdGZvciAoOyByZWNvcmQ7IHJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKSkge1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMDAtXFx0XFx0aWYgKGJlMzJfdG9fY3B1KHJlY29yZC1cXHUwMDNlYWRkcikgXFx1MDAzYz0gZngubWF4X2ludGVybmFsX2FkcmVzcykge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MzEwPXN0YXRpYyB2b2lkIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zNzEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzcyOlxcdFxcdGZvciAocmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpOyByZWM7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzczOlxcdFxcdCAgICAgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzc0LVxcdFxcdFxcdEJvb3RhZGRyID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI2Mjc9c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NzMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY3NDpcXHRmb3IgKHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTsgcmVjO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NzU6XFx0ICAgICByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjc2LVxcdFxcdE9wZXJhZGRyID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz0yOTM9c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zMDAtXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjMwMTpcXHRmb3IgKHJlYyA9ICh2b2lkICopZnctXFx1MDAzZWRhdGE7IHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMwMi1cXHRcXHRjb25zdCB1MTYgbGVuID0gYmUxNl90b19jcHUocmVjLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTM0MD1zdGF0aWMgaW50IHppaXJhdmVfZmlybV91cGxvYWQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM3MC1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM6MzcxOlxcdGZvciAocmVjID0gKHZvaWQgKilmdy1cXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzcyLVxcdFxcdHJldCA9IHppaXJhdmVfZmlybV93cml0ZV9wa3Qod2RkLCBiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpLFxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9MzA9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxcbmluY2x1ZGUvbGludXgvaWhleC5oOjMxOl9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG5pbmNsdWRlL2xpbnV4L2loZXguaC0zMi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaD0zOD1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6Mzk6aWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG5pbmNsdWRlL2xpbnV4L2loZXguaC00MC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaC00NS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaDo0NjpcXHRuZXh0ID0gX19paGV4X25leHRfYmlucmVjKHJlYyk7XFxuaW5jbHVkZS9saW51eC9paGV4LmgtNDctXFx0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXFx1MDAzZWxlbikgPyBuZXh0IDogTlVMTDtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTQ5LVxcbmluY2x1ZGUvbGludXgvaWhleC5oOjUwOi8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbid0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNTEtc3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNjAtXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6NjE6XFx0Zm9yICg7IHJlYyBcXHUwMDNjPSBlbmQ7IHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuaW5jbHVkZS9saW51eC9paGV4LmgtNjItXFx0XFx0LyogWmVybyBsZW5ndGggbWFya3MgZW5kIG9mIHJlY29yZHMgKi9cXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTE2Mj1zdGF0aWMgaW50IHpsMzhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE5OS1cXHRcXHQvKiBuZXh0ICEgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoyMDA6XFx0XFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTIwMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjAzLjA0MjczMjU4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5OTc4MDU0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaWhleCBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzLCBzcGVjaWZpY2FsbHkgYnkgbW9kaWZ5aW5nIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgIHdpdGhpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBsb3ctbGV2ZWwgZml4IHRoYXQgY291bGQgaGF2ZSBhIHdpZGUgaW1wYWN0LCB3aGljaCBpcyBib3RoIGludHJpZ3VpbmcgYW5kIHBvdGVudGlhbGx5IGNyaXRpY2FsLlxuXG5UaGUgaXNzdWUgc2VlbXMgdG8gc3RlbSBmcm9tIGEgbGFjayBvZiByb2J1c3QgYm91bmRhcnkgY2hlY2tpbmcgd2l0aGluIHRob3NlIGZ1bmN0aW9ucy4gYGloZXhfbmV4dF9iaW5yZWNgIG5vdyBnYWlucyBhbiBhZGRpdGlvbmFsIGNoZWNrIGZvciB3aGVuIGByZWMtXHUwMDNlbGVuYCBpcyAwLiBBIHplcm8gbGVuZ3RoIHJlY29yZCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgZmlsZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgbWFsZm9ybWVkIEhFWCBmaWxlIHRoYXQgZXJyb25lb3VzbHkgc3BlY2lmaWVzIHRoZSBmaWxlIGhhcyBhIHJlY29yZCwgYnV0IHdpdGggbGVuZ3RoIDAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYGloZXhfdmFsaWRhdGVfZndgIG5vdyBjaGVja3MgaWYgdGhlIGZpcm13YXJlIHNpemUgYGZ3LVx1MDAzZXNpemVgIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIGVuZCBtYXJrZXIgYmVmb3JlIGFjY2Vzc2luZyB0aGUgZW5kIG1hcmtlci5cblxuVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgYSBjYXJlZnVsbHkgY3JhZnRlZCwgbWFsaWNpb3VzIEludGVsIEhFWCBmaWxlIGNvdWxkIHBvdGVudGlhbGx5IHRyaWdnZXIgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9yIGFuIGluZmluaXRlIGxvb3AgZHVyaW5nIGZpcm13YXJlIHBhcnNpbmcuIEdpdmVuIHRoYXQgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgKGFuZCBsaWtlbHkgYHJlcXVlc3RfZmlybXdhcmVgIGluIGEgbW9yZSBnZW5lcmFsIHNlbnNlKSBhcmUgdXNlZCBieSBhIHNpZ25pZmljYW50IG51bWJlciBvZiBkcml2ZXJzIGFjcm9zcyB2YXJpb3VzIHN1YnN5c3RlbXMsIHRoZSBhdHRhY2sgc3VyZmFjZSBpcyByZWxhdGl2ZWx5IGxhcmdlLiBJIHNlZSBpdCdzIHVzZWQgaW4gZHJpdmVycyBmb3IgaW5wdXQgZGV2aWNlcyAobGlrZSB0b3VjaHNjcmVlbnMgYW5kIHRoZSBJTVMgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdCksIG1lZGlhIGRldmljZXMgKFVTQiBjYW1lcmFzKSwgVVNCIGF1ZGlvIGludGVyZmFjZXMsIFVTQiBzZXJpYWwgZHJpdmVycywgd2F0Y2hkb2cgdGltZXJzLCBhbmQgYXVkaW8gY29kZWNzLiBUaGF0J3MgYSBkaXZlcnNlIHJhbmdlLCBhbmQgZWFjaCBjb3VsZCBiZSBzdXNjZXB0aWJsZS5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGhvdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMgdmlhIGBkdW1teV9oY2QvcmF3LWdhZGdldGAuIFRoaXMgaXMga2V5LiBUaGUgZmFjdCB0aGF0IHRoZSBrZXJuZWwgaGFzIGFuIGVzdGFibGlzaGVkIGZ1enppbmcgZnJhbWV3b3JrIHRoYXQgY2FuIGRpcmVjdGx5IHRyaWdnZXIgdGhlc2UgZmlybXdhcmUgbG9hZGluZyBwYXRocyB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gbWFrZXMgdGhlIHZ1bG5lcmFiaWxpdHkgaW5jcmVkaWJseSByaXBlIGZvciBleHBsb2l0YXRpb24gYW5kIGRpc2NvdmVyeS4gSXQgc2VlbXMgbGlrZSB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IgaXMgbm90IG92ZXJseSBjb21wbGljYXRlZC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBoaWdoLXByaW9yaXR5IGFyZWEgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBkcml2ZXJzIGxpc3RlZCwgd2l0aCBhIHBhcnRpY3VsYXIgZW1waGFzaXMgb24gZ2VuZXJhdGluZyBhbmQgZmVlZGluZyB0aGVtIG1hbGZvcm1lZCBJbnRlbCBIRVggZmlsZXMuIFdlIGNhbiBnZXQgYSBsb3Qgb2YgbWlsZWFnZSBieSBjaGVja2luZyBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCBhbmQgaXQncyB1c2FnZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMTQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjEyLjA0MDU0MTI5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAzMzM4ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfaWhleF9maXJtd2FyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTEyMDQ9c3RhdGljIHNzaXplX3QgaW1zX3BjdV91cGRhdGVfZmlybXdhcmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0xMjIwLVxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgX19mcmVlKGZpcm13YXJlKSA9IE5VTEw7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoxMjIxOlxcdGVycm9yID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgSU1TX1BDVV9GSVJNV0FSRV9OQU1FLCBwY3UtXFx1MDAzZWRldik7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0xMjIyLVxcdGlmIChlcnJvcikge1xcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9ODY1PXN0YXRpYyBzc2l6ZV90IGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg3NC1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3IF9fZnJlZShmaXJtd2FyZSkgPSBOVUxMO1xcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjg3NTpcXHRlcnJvciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3bmFtZSwgZGV2KTtcXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy04NzYtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTIyND1zdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMzEtXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyMzI6XFx0cmV0ID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgVklDQU1fRklSTVdBUkUsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMzMtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYz03MT1zdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODUtXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjg2OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2bG9hZGVyX2Z3LCBcXFwiZW1pMjYvbG9hZGVyLmZ3XFxcIiwgXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04OS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTA6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZiaXRzdHJlYW1fZncsIFxcXCJlbWkyNi9iaXRzdHJlYW0uZndcXFwiLFxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05MS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05NC1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTU6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZV9mdywgXFxcImVtaTI2L2Zpcm13YXJlLmZ3XFxcIixcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtOTYtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9Nzk9c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk0LVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzo5NTpcXHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmxvYWRlcl9mdywgXFxcImVtaTYyL2xvYWRlci5md1xcXCIsIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtOTgtXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk5OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2Yml0c3RyZWFtX2Z3LCBcXFwiZW1pNjIvYml0c3RyZWFtLmZ3XFxcIixcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTAwLVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwMy1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTA0OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZmlybXdhcmVfZncsIEZJUk1XQVJFX0ZXLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xMDUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU4PXN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTY1LVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzo2NjpcXHRpZiAocmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZmlybXdhcmVfcGF0aCxcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtNjctXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0zMTA9c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMzU6XFx0cmVzcG9uc2UgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNi1cXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmVkZ2Vfc2VyaWFsLVxcdTAwM2VzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI2Mjc9c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NTYtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY1NzpcXHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY1OC1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmVkZ2Vfc2VyaWFsLVxcdTAwM2VzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz01MDY9c3RhdGljIHNzaXplX3QgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtNTE0LVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzo1MTU6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgWklJUkFWRV9GV19OQU1FLCBkZXYpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MTYtXFx0aWYgKGVycikge1xcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9NTE9c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNzAtICogcnVuIG9mZiB0aGUgZW5kIHdoaWxlIHJlYWRpbmcgcmVjb3Jkcy4uLiAqL1xcbmluY2x1ZGUvbGludXgvaWhleC5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcXG5pbmNsdWRlL2xpbnV4L2loZXguaC03Mi1cXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpmd19uYW1lLFxcbi0tXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTYyPXN0YXRpYyBpbnQgemwzOF9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlZ21hcCAqcmVnbWFwKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTc3LVxcdCAqL1xcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjE3ODpcXHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmZ3LCBcXFwiemwzODA2MC5md1xcXCIsIGRldik7XFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTc5LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjEzLjY0Mzg4NzI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4MzgxNjU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgVnVsbmVyYWJsZSBGaXJtd2FyZSBWYWxpZGF0aW9uKipcblxuT2theSwgc28gdGhlIGByZXF1ZXN0X2loZXhfZmlybXdhcmVgIGZ1bmN0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSXQgY2FsbHMgYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCwgSSBrbm93LCBpcyBzb21ldGhpbmcgU3l6a2FsbGVyIGNhbiBtYW5pcHVsYXRlLiBXZSBjYW4gZmVlZCBpdCBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWVhbnMsIGlmIHRoZXJlJ3MgYSB2dWxuZXJhYmlsaXR5IGluIGBpaGV4X3ZhbGlkYXRlX2Z3YCBhZnRlciBgcmVxdWVzdF9maXJtd2FyZWAsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaXQgd2l0aCBTeXprYWxsZXIuIEV4Y2VsbGVudC4gTm93LCBsZXQncyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgYWN0dWFsbHkgdXNpbmcgdGhpcyBmbG93LiBXZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9ucy5cblxuUmlnaHQsIGxldCdzIGxpc3QgdGhlbSBvdXQ6IGBkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jYCB1c2VzIGBDT05GSUdfSU5QVVRfSU1TX1BDVWAsIGBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguY2AgLVx1MDAzZSBgQ09ORklHX1RPVUNIU0NSRUVOX0lMSTIxMFhgLCBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2AgLVx1MDAzZSBgQ09ORklHX1VTQl9HU1BDQV9WSUNBTWAsIGBkcml2ZXJzL3VzYi9taXNjL2VtaTI2LmNgIC1cdTAwM2UgYENPTkZJR19VU0JfRU1JMjZgLCBgZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jYCAtXHUwMDNlIGBDT05GSUdfVVNCX0VNSTYyYCwgYGRyaXZlcnMvdXNiL21pc2MvZXp1c2IuY2AgLVx1MDAzZSBgQ09ORklHX1VTQl9FWlVTQmAgKGltcG9ydGFudCwgYmVjYXVzZSBldmVuIGlmIG5vdCBhIG1vZHVsZSBkaXJlY3RseSwgb3RoZXJzIG1heSB1c2UgaXQhKSwgYGRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jYCAtXHUwMDNlIGBDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVGAsIGBkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmNgIC1cdTAwM2UgYENPTkZJR19aSUlSQVZFX1dBVENIRE9HYCwgYW5kIGZpbmFsbHksIGBzb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuY2AgLVx1MDAzZSBgQ09ORklHX1NORF9TT0NfWkwzODA2MGAuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg0MCwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjAuODI3NzA2ODY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ3NjQ1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElOUFVUX0lNU19QQ1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWc9Nzg1PWNvbmZpZyBJTlBVVF9JQk1fUEFORUxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnLTgwMi1cXG5kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZzo4MDM6Y29uZmlnIElOUFVUX0lNU19QQ1VcXG5kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZy04MDQtXFx0dHJpc3RhdGUgXFxcIklNUyBQYXNzZW5nZXIgQ29udHJvbCBVbml0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjIuMzgyNDc2MTU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY1NzEzNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZz00Nzg9Y29uZmlnIFRPVUNIU0NSRUVOX0hZTklUUk9OX0NTVDgxNlhcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZy00ODktXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnOjQ5MDpjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZy00OTEtXFx0dHJpc3RhdGUgXFxcIklsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjoyMy45NDgxOTkxMTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU5NjMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HU1BDQV9WSUNBTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnPTQxND1jb25maWcgVVNCX0dTUENBX1ZDMDMyWFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZy00MjItXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZzo0MjM6Y29uZmlnIFVTQl9HU1BDQV9WSUNBTVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWctNDI0LVxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjUuNDY0MTg0ODk4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4MjQ4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRU1JMjZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvbWlzYy9LY29uZmlnPTM2PWNvbmZpZyBVU0JfRU1JNjJcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy00OS1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6NTA6Y29uZmlnIFVTQl9FTUkyNlxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy01MS1cXHR0cmlzdGF0ZSBcXFwiRU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjI2Ljk4MjQzODM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2Mjk3MDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0VNSTYyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz03PWNvbmZpZyBVU0JfVVNTNzIwXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMzUtXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjM2OmNvbmZpZyBVU0JfRU1JNjJcXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIkVNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjguNTQ1NDEyMTgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5MzcwNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTIwNT1jb25maWcgVVNCX1NFUklBTF9JUlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIxNTpjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlVTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozMC4wOTQ3ODU5ODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDkyNTU5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTM1NT1jb25maWcgWElMSU5YX1dJTkRPV19XQVRDSERPR1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MzczOmNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiWm9kaWFjIFJBVkUgV2F0Y2hkb2cgVGltZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjMxLjY0NDA0NTMzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNDc1MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1NPQ19aTDM4MDYwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZz0yNzY1PWNvbmZpZyBTTkRfU09DX1dTQTg4NFhcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0yNzcyLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzoyNzczOmNvbmZpZyBTTkRfU09DX1pMMzgwNjBcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctMjc3NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozMy4xNDg4MDE4OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDgxNjI4OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBFbmFibGluZyBDb25maWdzKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZ3JlZW5saWdodCB0aGVzZSBjb25maWd1cmF0aW9ucyBmb3IgZGVwbG95bWVudCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZSBhbmQgb3BlcmF0aW9uYWwuIFdlJ3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBzeXN0ZW0tbGV2ZWwgY2hhbmdlcyBoZXJlLCBhbmQgYSBtaXNjb25maWd1cmVkIGRlcGVuZGVuY3kgY291bGQgbGVhZCB0byBjYXNjYWRpbmcgZmFpbHVyZXMg4oCTIHNvbWV0aGluZyBJJ2QgbGlrZSB0byBhdm9pZCBhdCBhbGwgY29zdHMsIGVzcGVjaWFsbHkgZHVyaW5nIGEgcHJvZHVjdGlvbiByb2xsb3V0LiBTbywgSSdtIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcHJlcmVxdWlzaXRlIHNlcnZpY2VzLCBsaWJyYXJpZXMsIGFuZCBleHRlcm5hbCByZXNvdXJjZXMgdGhhdCB0aGVzZSBjb25maWdzIHJlbHkgb24uIEknbSBmb2N1c2luZyBub3QganVzdCBvbiB3aGV0aGVyIHRoZXkgKmV4aXN0KiwgYnV0IGFsc28gb24gdGhlaXIgY3VycmVudCBzdGF0ZSDigJMgYXJlIHRoZXkgaGVhbHRoeSwgcGVyZm9ybWluZyBhcyBleHBlY3RlZCwgYW5kIGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkPyBBcmUgdGhlIEFQSSBlbmRwb2ludHMgdGhleSB1c2Ugc3RhYmxlLCB3aXRoIHN1aXRhYmxlIHJhdGUgbGltaXRzLCBhbmQgZG9lcyB0aGUgdW5kZXJseWluZyBpbmZyYXN0cnVjdHVyZSBoYXZlIGVub3VnaCBjYXBhY2l0eSB0byBzdXBwb3J0IGFueSBuZXcgZGVtYW5kcyB0aGVzZSBjb25maWdzIG1pZ2h0IGludHJvZHVjZT8gSSdtIGNyb3NzLXJlZmVyZW5jaW5nIGFueSByZWNlbnQgY2hhbmdlcyB0byBkZXBlbmRlbnQgc3lzdGVtczsgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpbmNvbXBhdGliaWxpdGllcyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGhhdmUgZmxvd24gdW5kZXIgdGhlIHJhZGFyLiBGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYW55IHNlY3VyaXR5IGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGVzZSBjb25maWdzIGhhdmUgYmVlbiBmdWxseSBhZGRyZXNzZWQgYW5kIHRoYXQgYXBwcm9wcmlhdGUgYWNjZXNzIGNvbnRyb2xzIGFyZSBlc3RhYmxpc2hlZC4gTm8gcG9pbnQgaW4gbWFraW5nIGEgZ3JlYXQgZW5oYW5jZW1lbnQgaWYgaXQgZXhwb3NlcyBhIHZ1bG5lcmFiaWxpdHkuIEEgdGhvcm91Z2ggZGVwZW5kZW5jeSBjaGVjayBpcyB0aGUgb25seSB3YXkgdG8gbWluaW1pemUgdGhlIHJpc2tzIGFuZCB2YWxpZGF0ZSB3ZSBjYW4gcHJvY2VlZCBzYWZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjYxLCJPdXRwdXRUb2tlbnMiOjI5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA0MzM3NTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgwMzpcXHRjb25maWcgSU5QVVRfSU1TX1BDVVxcbiA4MDQ6XFx0XFx0dHJpc3RhdGUgXFxcIklNUyBQYXNzZW5nZXIgQ29udHJvbCBVbml0IGRyaXZlclxcXCJcXG4gODA1OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDgwNjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1NcXG4gODA3OlxcdFxcdGhlbHBcXG4gODA4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBzeXN0ZW0gd2l0aCBJTVMgUmF2ZSBQYXNzZW5nZXIgQ29udHJvbCBVbml0LlxcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiA4MTE6XFx0XFx0ICBjYWxsZWQgaW1zX3BjdS5cXG4gODEyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA1Nzc2MTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0OTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0OTA6XFx0Y29uZmlnIFRPVUNIU0NSRUVOX0lMSTIxMFhcXG4gNDkxOlxcdFxcdHRyaXN0YXRlIFxcXCJJbGl0ZWsgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxcXCJcXG4gNDkyOlxcdFxcdGRlcGVuZHMgb24gSTJDXFxuIDQ5MzpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuIDQ5NDpcXHRcXHRoZWxwXFxuIDQ5NTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXFxuIDQ5NjpcXHRcXHQgIGNvbnRyb2xsZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vZGVscyBJTEkyMTAyLFxcbiA0OTc6XFx0XFx0ICBJTEkyMTAycywgSUxJMjEwMywgSUxJMjEwM3MgYW5kIElMSTIxMDUuXFxuIDQ5ODpcXHRcXHQgIFN1Y2gga2luZCBvZiBjaGlwc2V0cyBjYW4gYmUgZm91bmQgaW4gQW1hem9uIEtpbmRsZSBGaXJlXFxuIDQ5OTpcXHRcXHQgIHRvdWNoc2NyZWVucy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMwNzQ5Njg2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDIzOlxcdGNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cXG4gNDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG4gNDI1OlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWIFxcdTAwMjZcXHUwMDI2IFVTQl9HU1BDQVxcbiA0MjY6XFx0XFx0aGVscFxcbiA0Mjc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxcbiA0Mjg6XFx0XFx0ICAodmljYW0pLlxcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA0MzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3NwY2FfdmljYW0uXFxuIDQzMjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMwODI4OTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRjb25maWcgVVNCX0VNSTI2XFxuICA1MTpcXHRcXHR0cmlzdGF0ZSBcXFwiRU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgMnw2IGxvdyBsYXRlbmN5IFVTQlxcbiAgNTQ6XFx0XFx0ICBBdWRpbyBpbnRlcmZhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxcbiAgNTc6XFx0XFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxcbiAgNTg6XFx0XFxuICA1OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA4NzU2NDZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvbWlzYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM2OlxcdGNvbmZpZyBVU0JfRU1JNjJcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJFTUkgNnwybSBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgNnwybSBsb3cgbGF0ZW5jeSBVU0JcXG4gIDQwOlxcdFxcdCAgQXVkaW8gYW5kIE1pZGkgaW50ZXJmYWNlLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIEFmdGVyIGZpcm13YXJlIGxvYWQgdGhlIGRldmljZSBpcyBoYW5kbGVkIHdpdGggc3RhbmRhcmQgbGludXhcXG4gIDQzOlxcdFxcdCAgVVNCIEF1ZGlvIGRyaXZlci5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBUaGlzIGNvZGUgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjM4LjYzMDkyNzAzNloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdGNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXFxuIDIxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMjE3OlxcdFxcdGhlbHBcXG4gMjE4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgZGV2aWNlcyBmcm9tXFxuIDIxOTpcXHRcXHQgIEluc2lkZSBPdXQgTmV0d29ya3MgKERpZ2kpOlxcbiAyMjA6XFx0XFx0ICBFZGdlcG9ydC80XFxuIDIyMTpcXHRcXHQgIFJhcGlkcG9ydC80XFxuIDIyMjpcXHRcXHQgIEVkZ2Vwb3J0LzR0XFxuIDIyMzpcXHRcXHQgIEVkZ2Vwb3J0LzJcXG4gMjI0OlxcdFxcdCAgRWRnZXBvcnQvNGlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMxMDI5Njc2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3dhdGNoZG9nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzczLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzczOlxcdGNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9kaWFjIFJBVkUgV2F0Y2hkb2cgVGltZXJcXFwiXFxuIDM3NTpcXHRcXHRkZXBlbmRzIG9uIEkyQ1xcbiAzNzY6XFx0XFx0c2VsZWN0IFdBVENIRE9HX0NPUkVcXG4gMzc3OlxcdFxcdGhlbHBcXG4gMzc4OlxcdFxcdCAgV2F0Y2hkb2cgZHJpdmVyIGZvciB0aGUgWm9kaWFjIEFlcm9zcGFjZSBSQVZFIFN3aXRjaCBXYXRjaGRvZ1xcbiAzNzk6XFx0XFx0ICBQcm9jZXNzb3IuXFxuIDM4MDpcXHRcXG4gMzgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDM4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB6aWlyYXZlX3dkdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMxMTk2NDQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvY29kZWNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MzpcXHRjb25maWcgU05EX1NPQ19aTDM4MDYwXFxuMjc3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcbjI3NzU6XFx0XFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXFxuMjc3NjpcXHRcXHRkZXBlbmRzIG9uIEdQSU9MSUJcXG4yNzc3OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4yNzc4OlxcdFxcdGhlbHBcXG4yNzc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXFxuMjc4MDpcXHRcXHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcXG4yNzgxOlxcdFxcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cXG4yNzgyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzE0NTc3MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyOTc4MjAwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggVmVyaWZpY2F0aW9uIFBsYW4qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhleSdyZSBpbmxpbmUgZnVuY3Rpb25zIHJlc2lkaW5nIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAsIG1lYW5pbmcgdGhleSdyZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGVtLiBUaGUgbWFpbiBjaGFsbGVuZ2Ugbm93IGlzIHRvIHZlcmlmeSB0aGlzIGZpeCBieSBlbnN1cmluZyB0aGUgcmVsZXZhbnQgY29kZSBnZXRzIGNvbXBpbGVkIGFuZCBpcywgaWRlYWxseSwgZnV6emVkLlxuXG5Jbml0aWFsbHksIEkgY29uc2lkZXJlZCBlbmFibGluZyBhIGJyb2FkZXIgc2V0IG9mIGRyaXZlcnMuIEkgaGFkIGxpc3RlZCBgSU5QVVRfSU1TX1BDVWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgLCBgWklJUkFWRV9XQVRDSERPR2AsIGFuZCBgU05EX1NPQ19aTDM4MDYwYC4gSG93ZXZlciwgYSBxdWljayByZXZpZXcgb2YgZGVwZW5kZW5jaWVzIHJldmVhbHMgYSBmZXcgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMuIGBVU0JfR1NQQ0FfVklDQU1gIG5lZWRzIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4gYElOUFVUX0lNU19QQ1VgIHJlbGllcyBvbiBgVVNCYCBhbmQgYExFRFNfQ0xBU1NgLiBCb3RoIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCBhbmQgYFpJSVJBVkVfV0FUQ0hET0dgIGRlcGVuZCBvbiBgSTJDYC4gQW5kIGZpbmFsbHksIGBTTkRfU09DX1pMMzgwNjBgIG5lZWRzIGBTUElfTUFTVEVSYCBhbmQgYEdQSU9MSUJgLlxuXG5HaXZlbiB0aGVzZSBkZXBlbmRlbmNpZXMsIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBwYXRoIGlzIHRvIGZvY3VzIG9uIFVTQiBkcml2ZXJzIGZvciBub3cuIFRoZXkgY2FuIGJlIHJlbGF0aXZlbHkgZWFzaWx5IGZ1enplZCB1c2luZyBgZHVtbXlfaGNkYC4gVGhlcmVmb3JlLCBJJ2xsIHByaW9yaXRpemUgZW5hYmxpbmcgYFVTQl9FTUkyNmAsIGBVU0JfRU1JNjJgLCBgVVNCX1NFUklBTF9FREdFUE9SVGAsIGFuZCBgSU5QVVRfSU1TX1BDVWAuXG5cbkFkZGl0aW9uYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIHVzYWdlIG9mIGBVU0JfRVpVU0JgIGJlY2F1c2UgaXQncyB1c2VkIGJ5IGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAuIEl0J3Mgd29ydGggYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhleSdyZSBwcm9wZXJseSBoYW5kbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUxNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjU4LjkyOTI4MDg0NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0NjUwNjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0VaVVNCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz0yNjU9Y29uZmlnIFVTQl9ZVVJFWFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3Ni1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6Mjc3OmNvbmZpZyBVU0JfRVpVU0JfRlgyXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3OC1cXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb25zIGZvciBsb2FkaW5nIGZpcm13YXJlIG9uIEVaVVNCIGNoaXBzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzowMC40NzU3OTQ0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODAyMDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTI5MT1jb25maWcgVVNCX1NFUklBTF9JVVVcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDItXFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMxMjpjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzEzLVxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBVU0EteHh4IFNlcmlhbCBEcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjAyLjA2MzgyMjI4NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY0NjMyODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOlxuXG4qKkV4YW1pbmluZyB0aGUgRVotVVNCIERyaXZlciBDb21waWxhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIFVTQiBkcml2ZXIsIGBlenVzYi5jYCwgaXMgZ2V0dGluZyBjb21waWxlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIFRoZSBmaWxlIHBhdGggaXMgYGRyaXZlcnMvdXNiL21pc2MvZXp1c2IuY2AsIHdoaWNoIHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZHJpdmVyLCBub3QgZGVlcGx5IG5lc3RlZCB3aXRoaW4gc29tZSBlbGFib3JhdGUgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhhdCBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBpdHNlbGYgaXMgaGVscGZ1bCwgYnV0IGZpcnN0IEkgbmVlZCB0byBzZWUgKmhvdyogdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0LiBUaGUgcmlnaHQgcGxhY2UgdG8gYmVnaW4gd2l0aCB0aGlzIHF1ZXN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGlzIHByb2JhYmx5IHRoZSBzb3VyY2UgdHJlZSwgSSdsbCBnbyBoYXZlIGEgbG9vayBpbiB0aGF0IGZpbGUuIEkgY2FuIGdldCBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGJ1aWxkIGlzIGJlaW5nIG9yY2hlc3RyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MDUuMDI4NDU5MTRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mjk5NDUwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXp1c2Iub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfRU1JNjIpXFx0XFx0XFx0Kz0gZW1pNjIub1xcbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9FWlVTQl9GWDIpXFx0XFx0Kz0gZXp1c2Iub1xcbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0FQUExFX01GSV9GQVNUQ0hBUkdFKVxcdCs9IGFwcGxlLW1maS1mYXN0Y2hhcmdlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MDcuNjU4NDE0ODM5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Njk2MDc4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVVNCLUJhc2VkIEhhcmR3YXJlIGZvciBJbWFnaW5nIGFuZCBTZXJpYWwgQ29tbXVuaWNhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgYENPTkZJR19VU0JfRVpVU0JfRlgyYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBtYXAgb3V0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBmb3IgYSBzeXN0ZW0gdXRpbGl6aW5nIHRoaXMgY2hpcC4gRmlyc3QsIEknbSB0aGlua2luZywgXCJMZXQncyBsaXN0IHRob3NlIGNvbmZpZ3Mgd2Uga25vdyB3ZSBuZWVkIHRvIGVuYWJsZSwgaW5jbHVkaW5nIHRoZSBgSU5QVVRfSU1TX1BDVWAsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgIGRyaXZlcnMsIGFuZCBvZiBjb3Vyc2UgYFVTQl9FWlVTQl9GWDJgLlwiXG5cbk5leHQsIG15IG1lbnRhbCBjaGVja2xpc3QgbW92ZXMgdG8gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbnkgdW5kZXJseWluZyByZXF1aXJlbWVudHMgdGhhdCB0aGUgYFVTQl9FWlVTQl9GWDJgIGRyaXZlciBtaWdodCBoYXZlLiBUaW1lIHRvIGludmVzdGlnYXRlIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBwcm9wZXIgZnVuY3Rpb25hbGl0eSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoxMS4yMjgwMjU2MzVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzc6XFx0Y29uZmlnIFVTQl9FWlVTQl9GWDJcXG4gMjc4OlxcdFxcdHRyaXN0YXRlIFxcXCJGdW5jdGlvbnMgZm9yIGxvYWRpbmcgZmlybXdhcmUgb24gRVpVU0IgY2hpcHNcXFwiXFxuIDI3OTpcXHRcXHRoZWxwXFxuIDI4MDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IG5lZWQgRVpVU0IgZGV2aWNlIHN1cHBvcnQuXFxuIDI4MTpcXHRcXHQgIChDeXByZXNzIEZYL0ZYMi9GWDJMUCBtaWNyb2NvbnRyb2xsZXJzKVxcbiAyODI6XFx0XFxuIDI4MzpcXHRjb25maWcgVVNCX0hVQl9VU0IyNTFYQlxcbiAyODQ6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQjI1MVhCIEh1YiBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24gRHJpdmVyXFxcIlxcbiAyODU6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gMjg2OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MTEuMjI4MTI3Njc1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzA3ODQ3NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2stSW4qKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBgVVNCX0VaVVNCX0ZYMmAg4oCTIG5vcGUsIGNsZWFuLiBObyBleHRlcm5hbCBsaWJyYXJ5IGhvb2tzIG9yIHRyaWNreSBidWlsZCBmbGFncyB0byB3b3JyeSBhYm91dCB0aGVyZS4gQWx3YXlzIGEgZ29vZCBzaWduLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSAqbWVhdCogb2YgaXQ6IGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgdGVuZCB0byBnZXQgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBhIGJpdCB0YW5nbGVkLiBHb3R0YSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIExldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gRGlnZ2luZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM4MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MTQuMTk4OTE0ODc5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTU6XFx0Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcXG4gMjE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbiAyMTc6XFx0XFx0aGVscFxcbiAyMTg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBkZXZpY2VzIGZyb21cXG4gMjE5OlxcdFxcdCAgSW5zaWRlIE91dCBOZXR3b3JrcyAoRGlnaSk6XFxuIDIyMDpcXHRcXHQgIEVkZ2Vwb3J0LzRcXG4gMjIxOlxcdFxcdCAgUmFwaWRwb3J0LzRcXG4gMjIyOlxcdFxcdCAgRWRnZXBvcnQvNHRcXG4gMjIzOlxcdFxcdCAgRWRnZXBvcnQvMlxcbiAyMjQ6XFx0XFx0ICBFZGdlcG9ydC80aVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoxNC4xOTkwMjQxMjlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjQ0NTMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGV2aWNlIERyaXZlciBEZXBlbmRlbmN5IENoZWNrKipcblxuUmlnaHQsIGxldCdzIHNlZS4gRmlyc3QsIGdvb2QsIG5vIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgZm9yIGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhhdCdzIGEgY2xlYW4gc2xhdGUsIGFsd2F5cyBhIG5pY2Ugc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHNoaWZ0IG15IGZvY3VzIHRvIHRob3NlIHJlbGF0ZWQgRU1JIGRldmljZXMgLSBgVVNCX0VNSTI2YCBhbmQgYFVTQl9FTUk2MmAuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYFVTQl9TRVJJQUxfRURHRVBPUlRgIGlzbid0IGluYWR2ZXJ0ZW50bHkgcmVsaWFudCBvbiBzb21lIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBzdHJ1Y3R1cmVzIHByb3ZpZGVkIGJ5IGVpdGhlciBvZiB0aG9zZS4gTmVlZCB0byBxdWlja2x5IHNlZSBpZiB0aGVyZSdzIGFueSBzaGFyZWQgY29kZSBvciBjb21tb24gZWxlbWVudHMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgc2hvdWxkIGFsc28gdGhpbmsgYWJvdXQgd2hldGhlciB0aGV5J3JlIGxpa2VseSB0byBoYXZlIGFueSBraW5kIG9mIHNoYXJlZCBpbnRlcnJ1cHQgc3RydWN0dXJlIG9yIHJlc291cmNlIGFsbG9jYXRpb24uIEdvaW5nIHRvIGRpZyBpbnRvIHRob3NlIG1vZHVsZXMgbmV4dCwgYW5kIGNyb3NzLXJlZmVyZW5jZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjE3Ljc1NTQ3MTQ3NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9taXNjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzY6XFx0Y29uZmlnIFVTQl9FTUk2MlxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIkVNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSA2fDJtIGxvdyBsYXRlbmN5IFVTQlxcbiAgNDA6XFx0XFx0ICBBdWRpbyBhbmQgTWlkaSBpbnRlcmZhY2UuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxcbiAgNDM6XFx0XFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIFRoaXMgY29kZSBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaCBjYW4gYmVcXG4gIDQ2OlxcdFxcdCAgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91IHdhbnQpLlxcbiAgNDc6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGF1ZGlvLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGFzIGFcXG4gIDQ4OlxcdFxcdCAgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XFx1MDAzZS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0Y29uZmlnIFVTQl9FTUkyNlxcbiAgNTE6XFx0XFx0dHJpc3RhdGUgXFxcIkVNSSAyfDYgVVNCIEF1ZGlvIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGRyaXZlciBsb2FkcyBmaXJtd2FyZSB0byBFbWFnaWMgRU1JIDJ8NiBsb3cgbGF0ZW5jeSBVU0JcXG4gIDU0OlxcdFxcdCAgQXVkaW8gaW50ZXJmYWNlLlxcbiAgNTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjE3Ljc1NTU1MjY2NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA1NTIzMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgcHJvY2Vzc2luZzpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGluIFByb2dyZXNzKipcblxuQWxyaWdodCwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFzc2Vzc21lbnQuIEkgc2VlIG5vIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBmb3IgYFVTQl9FTUkyNmAgb3IgYFVTQl9FTUk2MmAsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbGlrZWx5IHNpbXBsaWZpZXMgdGhpbmdzLCBhdCBsZWFzdCBvbiB0aGUgc3VyZmFjZS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uIHRvIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHJldmlldyB0aGUgYXJjaGl0ZWN0dXJlIGRvY3VtZW50cyB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbiB0aGVyZSBhcmUgbm8gaW1wbGljaXQgb3IgaW5kaXJlY3QgcmVsYXRpb25zaGlwcyBJJ20gbWlzc2luZy4gR290IHRvIGJlIHRob3JvdWdoIGhlcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgcGl2b3QgYW5kIGV4YW1pbmUgdGhlIGBJTlBVVF9JTVNfUENVYCBjb21wb25lbnQuIEl0IGNvdWxkIGhhdmUgY29ubmVjdGlvbnMgSSdtIG5vdCBzZWVpbmcgeWV0LiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBpcyBjcml0aWNhbCB0byBlbnN1cmluZyBzbW9vdGggaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MjgxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoyMi41NjEwNzg4N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODAzOlxcdGNvbmZpZyBJTlBVVF9JTVNfUENVXFxuIDgwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiSU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXFxcIlxcbiA4MDU6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gODA2OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTU1xcbiA4MDc6XFx0XFx0aGVscFxcbiA4MDg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIHN5c3RlbSB3aXRoIElNUyBSYXZlIFBhc3NlbmdlciBDb250cm9sIFVuaXQuXFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuIDgxMTpcXHRcXHQgIGNhbGxlZCBpbXNfcGN1LlxcbiA4MTI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjIyLjU2MTI2MjI3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTE0NTExNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHR3byBrZXkgY29tcG9uZW50czogdGhlIGBVU0JgIHNldHRpbmcgYW5kIHRoZSBgTEVEU19DTEFTU2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaW50dWl0aW9uIG9uIHRoaXMsIGFuZCBgTEVEU19DTEFTU2AgaXMgKnVzdWFsbHkqIGVuYWJsZWQgYnkgZGVmYXVsdC4gU3RpbGwsIGl0J3Mgd29ydGggZG91YmxlLWNoZWNraW5nIHRvIGNvbmZpcm0gdGhhdCdzIHRoZSBjYXNlIGluIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gV2UncmUgZ29pbmcgdG8gdHJlYXQgaXQgYXMgYW4gaW5jbHVzaW9uIGVpdGhlciB3YXkuIE5vdywgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBVU0JfR1NQQ0FfVklDQU1gLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGxpZXMuIExldCdzIGRlbHZlIGluIGFuZCBzZWUgd2hhdCB0aGF0J3MgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njc2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoyNS41NTI3MTY2NjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDIzOlxcdGNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cXG4gNDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG4gNDI1OlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWIFxcdTAwMjZcXHUwMDI2IFVTQl9HU1BDQVxcbiA0MjY6XFx0XFx0aGVscFxcbiA0Mjc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxcbiA0Mjg6XFx0XFx0ICAodmljYW0pLlxcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA0MzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3NwY2FfdmljYW0uXFxuIDQzMjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MjUuNTUyODE5MDg0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTY1MTcxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZyBpcyBzdHJvbmdseSBjb250aW5nZW50IG9uIGEgZmV3IHNwZWNpZmljIGZhY3RvcnMuIEZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4gVGhlc2UgYXJlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyB3aGVuIGNvbnNpZGVyaW5nIHZpZGVvIGlucHV0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkIHZpZGVvIGRldmljZSBhbmQgaWYgdGhlIFVTQiBnc3BjYSBkcml2ZXJzIGFyZSBjb3JyZWN0bHkgY29uZmlndXJlZC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgbGV2ZWwgY2hlY2suXG5cblRoZW4sIHNpbmNlIHRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUga2luZCBvZiBkaXNwbGF5IGludGVyYWN0aW9uLCBJJ2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgaW52ZXN0aWdhdGUgYFRPVUNIU0NSRUVOX0lMSTIxMFhgLiBJdCdzIGNydWNpYWwgdG8gY29uZmlybSBpZiB0aGF0J3MgZW5hYmxlZCBhbmQgZnVuY3Rpb25pbmcgY29ycmVjdGx5LiBUaGlzIGxpa2VseSBoYXMgYSBkaXJlY3QgaW1wYWN0IG9uIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwNzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjI4Ljc2OTM1MjQ3NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDkwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDkwOlxcdGNvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYXFxuIDQ5MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSWxpdGVrIElMSTIxMFggYmFzZWQgdG91Y2hzY3JlZW5cXFwiXFxuIDQ5MjpcXHRcXHRkZXBlbmRzIG9uIEkyQ1xcbiA0OTM6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiA0OTQ6XFx0XFx0aGVscFxcbiA0OTU6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxcbiA0OTY6XFx0XFx0ICBjb250cm9sbGVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb2RlbHMgSUxJMjEwMixcXG4gNDk3OlxcdFxcdCAgSUxJMjEwMnMsIElMSTIxMDMsIElMSTIxMDNzIGFuZCBJTEkyMTA1LlxcbiA0OTg6XFx0XFx0ICBTdWNoIGtpbmQgb2YgY2hpcHNldHMgY2FuIGJlIGZvdW5kIGluIEFtYXpvbiBLaW5kbGUgRmlyZVxcbiA0OTk6XFx0XFx0ICB0b3VjaHNjcmVlbnMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjI4Ljc2OTQ0NjcxNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTcyMzM4MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgaGluZ2VzIG9uIHRoZSBgSTJDYCBidXMsIHRoYXQncyB0aGUgY29yZS4gQmVmb3JlIEkgZGlnIGFueSBkZWVwZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIEkyQyBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBOb3csIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYFpJSVJBVkVfV0FUQ0hET0dgIGlzIGludGVyYWN0aW5nLiBMZXQncyBzdGFydCB3aXRoIHRoYXQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozMS4zNDE3ODg3MzZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNzMsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNzM6XFx0Y29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcXG4gMzc0OlxcdFxcdHRyaXN0YXRlIFxcXCJab2RpYWMgUkFWRSBXYXRjaGRvZyBUaW1lclxcXCJcXG4gMzc1OlxcdFxcdGRlcGVuZHMgb24gSTJDXFxuIDM3NjpcXHRcXHRzZWxlY3QgV0FUQ0hET0dfQ09SRVxcbiAzNzc6XFx0XFx0aGVscFxcbiAzNzg6XFx0XFx0ICBXYXRjaGRvZyBkcml2ZXIgZm9yIHRoZSBab2RpYWMgQWVyb3NwYWNlIFJBVkUgU3dpdGNoIFdhdGNoZG9nXFxuIDM3OTpcXHRcXHQgIFByb2Nlc3Nvci5cXG4gMzgwOlxcdFxcbiAzODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMzgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHppaXJhdmVfd2R0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozMS4zNDE5NTI1ODZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4NjEyOTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSTJDIERlcGVuZGVudCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgb24gYEkyQ2AuIFRoYXQncyB0aGUgZ2F0ZXdheSBoZXJlLiBFdmVyeXRoaW5nIGhpbmdlcyBvbiB0aGF0IHByb3RvY29sLCBzbyBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZSBmaXJzdC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcyBob3cgYEkyQ2AgaXMgYmVpbmcgbGV2ZXJhZ2VkLlxuXG5UaGF0IG5hdHVyYWxseSBsZWFkcyBtZSB0byB0aGluayBhYm91dCBgU05EX1NPQ19aTDM4MDYwYC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlciBob3cgdGhhdCByZWxhdGVzIHRvIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhhdCBzcGVjaWZpYyBtb2R1bGUgbm93LiBNeSB0aG91Z2h0cyBub3cgYXJlIGZvY3VzZWQgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJjb25uZWN0aW9uIHdpdGggdGhlIGF1ZGlvIGNvZGVjIGFuZCB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdhdGhlciBmcm9tIGBTTkRfU09DX1pMMzgwNjBgLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBhcmVhIHRvIGFzc2VzcyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MzQuMjI4MDg1MDkxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvY29kZWNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MzpcXHRjb25maWcgU05EX1NPQ19aTDM4MDYwXFxuMjc3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcbjI3NzU6XFx0XFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXFxuMjc3NjpcXHRcXHRkZXBlbmRzIG9uIEdQSU9MSUJcXG4yNzc3OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4yNzc4OlxcdFxcdGhlbHBcXG4yNzc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXFxuMjc4MDpcXHRcXHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcXG4yNzgxOlxcdFxcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cXG4yNzgyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozNC4yMjgyMzIxODFaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMDc5OTE1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgY29uZmlndXJhdGlvbiBoZXJlIGhpbmdlcyBvbiB0aGUgYFNQSV9NQVNURVJgIGFuZCBgR1BJT0xJQmAgZGVwZW5kZW5jaWVzLiBUaG9zZSBhcmUgZm91bmRhdGlvbmFsLCBzbyB0aGV5J3JlIGluIHBsYWNlLiBOb3csIEknbSBsb29raW5nIGF0IFVTQiBkcml2ZXJzIHRoYXQgcmVseSBvbiBpaGV4IGZpcm13YXJlLiBJJ2xsIGVuYWJsZSBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9FWlVTQl9GWDJgLCBgSU5QVVRfSU1TX1BDVWAsIGFuZCBgTEVEU19DTEFTU2AuIFRoZXNlIGFyZSBjb21tb24gdGFyZ2V0cyBmb3IgdGhpcyBjb25maWd1cmF0aW9uLlxuXG5XYWl0IGEgc2Vjb25kLCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgVVNCX0VaVVNCX0ZYMmAtLXRoYXQncyBub3QgYSBkcml2ZXIsIGl0J3MgYSBsaWJyYXJ5LiBXaGljaCBtZWFucyBpdCBpcyB1c2VkIGJ5IG90aGVyIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBlbnRpcmUgc3RhY2sgYW5kIHRoYXQgSSBnZXQgaXQgcmlnaHQuIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAgc2luY2UgdGhleSB1c2UgdGhlIGBVU0JfRVpVU0JfRlgyYCBsaWJyYXJ5LiBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6NDUuMzM2MjI2MTMxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDE6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG4gMzAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMzAzOlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMwNDpcXHRcXHRoZWxwXFxuIDMwNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGEgS2V5c3BhbiBQREEsIFhpcmNvbSBvciBFbnRyZWdhIHNpbmdsZVxcbiAzMDY6XFx0XFx0ICBwb3J0IFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS4gVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mXFxuIDMwNzpcXHRcXHQgIGZpcm13YXJlIGRldmVsb3BlZCBmcm9tIHNjcmF0Y2ggYnkgQnJpYW4gV2FybmVyLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzMTA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXFxuIDMxMTpcXHRcXG4gMzEyOlxcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBVU0EteHh4IFNlcmlhbCBEcml2ZXJcXFwiXFxuIDMxNDpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBLZXlzcGFuIFVTQiB0byBzZXJpYWwgY29udmVydGVyXFxuIDMxNzpcXHRcXHQgIGRldmljZXMuICBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2YgS2V5c3BhbidzIG9mZmljaWFsIGZpcm13YXJlXFxuIDMxODpcXHRcXHQgIGFuZCB3YXMgZGV2ZWxvcGVkIHdpdGggdGhlaXIgc3VwcG9ydC4gIFlvdSBtdXN0IGFsc28gaW5jbHVkZVxcbiAzMTk6XFx0XFx0ICBmaXJtd2FyZSB0byBzdXBwb3J0IHlvdXIgcGFydGljdWxhciBkZXZpY2UocykuXFxuIDMyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6NDUuMzM2NDE0NjkxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NzAwNTUwOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOYCBkcml2ZXJzIGFyZSByZWxhdGVkIHRvIHRoZSBgVVNCX0VaVVNCX0ZYMmAgZGV2aWNlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCdzIG5haWwgZG93biB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuXG5cblRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYC4gR2l2ZW4gdGhhdCB0aGV5J3JlIGlubGluZSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5ICpjYWxsKiB0aG9zZS4gIEkndmUgZ290IGEgbGlzdCBoZXJlOiBgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlYCwgYGltc19wY3VfY291bnRfZndfcmVjb3Jkc2AsIGBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlYCwgYGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyYCwgYHNkX2luaXRgIChpbiB2aWNhbS5jKSwgYGVtaTI2X2xvYWRfZmlybXdhcmVgLCBgZW1pNjJfbG9hZF9maXJtd2FyZWAsIGBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYHVwZGF0ZV9lZGdlcG9ydF9FMlBST01gLCBgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZWAsIGB6aWlyYXZlX2Zpcm1fdmVyaWZ5YCwgYHppaXJhdmVfZmlybV91cGxvYWRgLCBhbmQgYHpsMzhfbG9hZF9maXJtd2FyZWAuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIE15IGlkZWFsIGZ1enppbmcgdGFyZ2V0cyBhcmUgZ29pbmcgdG8gYmUgdGhvc2Ugbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF0J3MgaG93IEknbGwgbWF4aW1pemUgdGhlIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIHZ1bG5lcmFiaWxpdGllcyBmcm9tIGV4dGVybmFsIGlucHV0LiBTbywgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRocm91Z2ggdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB0aG9zZSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTU2LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjA0LjAzNjk2OTI4M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5OTQ1ODExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz05NDA9c3RhdGljIGludCBpbXNfcGN1X2hhbmRsZV9maXJtd2FyZV91cGRhdGUoc3RydWN0IGltc19wY3UgKnBjdSxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTY2LVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM6OTY3OnN0YXRpYyB2b2lkIGltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKl9mdyxcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTk2OC1cXHRcXHRcXHRcXHRcXHQgICB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMDUzPXN0YXRpYyBpbnQgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZShzdHJ1Y3QgaW1zX3BjdSAqcGN1KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgxLVxcdFxcdFxcdFxcdFxcdHBjdS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBwY3UsXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMDgyOlxcdFxcdFxcdFxcdFxcdGltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZSk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgzLVxcdGlmIChlcnJvcikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODowNi4zMzY0MzQ5OThaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjE5Mjg4NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pMjZfbG9hZF9maXJtd2FyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MzI9c3RhdGljIGludCBlbWkyNl9zZXRfcmVzZXQoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciByZXNldF9iaXQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzozMzpzdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0zNC1zdGF0aWMgaW50IGVtaTI2X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTU3PXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy03MC1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6NzE6c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy03Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MjI2PXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0yMzEtXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjIzMjpcXHRlbWkyNl9sb2FkX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTIzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MDguNjk4MzY4MTkyWiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgxMzI1MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaTYyX2xvYWRfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTQxPXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6NDI6c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNDMtc3RhdGljIGludCBlbWk2Ml9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz02Nj1zdGF0aWMgaW50IGVtaTYyX3NldF9yZXNldCAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciByZXNldF9iaXQpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNzgtXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjc5OnN0YXRpYyBpbnQgZW1pNjJfbG9hZF9maXJtd2FyZSAoc3RydWN0IHVzYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtODAte1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTIzOD1zdGF0aWMgaW50IGVtaTYyX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMjQ0LVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzoyNDU6XFx0ZW1pNjJfbG9hZF9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0yNDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjExLjE3OTY5NzU3NFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMTM4MDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz01Nj1FWFBPUlRfU1lNQk9MX0dQTChlenVzYl9meDFfc2V0X3Jlc2V0KTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtNTctXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjU4OnN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy01OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXp1c2JfZnhfdHlwZSBmeCxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xMjA9aW50IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTIyLXtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTIzOlxcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngxLCBmaXJtd2FyZV9wYXRoKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDM9aW50IGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ1LXtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ2OlxcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngyLCBmaXJtd2FyZV9wYXRoKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MTMuNjgxMDgxNjg1WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU4NTQxNDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9lZGdlcG9ydF9FMlBST01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9Mjk0PXN0YXRpYyBpbnQgcm9tX3dyaXRlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsIF9fdTE2IGV4dEFkZHIsIF9fdTE2IGFkZHIsXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMDMtICpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQqXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzA0OiAqIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oKVxcdENvbXBhcmUgY3VycmVudCB2ZXJzaW9ucyBvZlxcdFxcdCpcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMDUtICpcXHRcXHRcXHRcXHRCb290IFJPTSBhbmQgTWFudWZhY3R1cmUgXFx0XFx0Klxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzA5LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzEwOnN0YXRpYyB2b2lkIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI3MDQ9c3RhdGljIGludCBlZGdlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzQtXFx0XFx0LyogQ2hlY2sgY3VycmVudCBFZGdlcG9ydCBFRVBST00gYW5kIHVwZGF0ZSBpZiBuZWNlc3NhcnkgKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNzc1OlxcdFxcdHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oZWRnZV9zZXJpYWwpO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjE2LjEzOTYyODUxN1oiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0ODQ4NDU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb2FkX2FwcGxpY2F0aW9uX2Zpcm13YXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI1ODc9c3RhdGljIHZvaWQgZ2V0X2Jvb3RfZGVzYyhzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjMtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNjI0OiAqIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjI1LSAqXFx0VGhpcyBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgdG8gdGhlIGRldmljZVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjYyNzpzdGF0aWMgdm9pZCBsb2FkX2FwcGxpY2F0aW9uX2Zpcm13YXJlKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2Mjgte1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjcwND1zdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjc2OS1cXHRcXHQvKiBub3cgbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgaW50byB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI3NzA6XFx0XFx0bG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShlZGdlX3NlcmlhbCk7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjc3MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MTguNDg4MTIwOTkxWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTgzNzU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBEZXZpY2UgRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucy4gV2UndmUgZ290IGEgdmFyaWV0eSBvZiB0aGVtIGhlcmUsIHNlZW1pbmdseSBzcGFubmluZyBkaWZmZXJlbnQgVVNCIGRldmljZSBjbGFzc2VzLiBGaXJzdCwgSSBzZWUgYGVtaTI2X3Byb2JlYCBhbmQgYGVtaTYyX3Byb2JlYCBpbiB0aGUgYGVtaTI2LmNgIGFuZCBgZW1pNjIuY2AgZHJpdmVycywgcmVzcGVjdGl2ZWx5LCB3aGljaCBsaWtlbHkgaGFuZGxlIHNvbWUgY3VzdG9tIEVNSSBkZXZpY2VzLiBUaGVuLCB3ZSBoYXZlIHRoZSBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFuZCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGZ1bmN0aW9ucyBpbiBgZXp1c2IuY2AuIEdpdmVuIHRoZWlyIG5hbWVzLCB0aG9zZSBhcmUgZmlybXdhcmUgZG93bmxvYWQgcm91dGluZXMgZm9yIEN5cHJlc3MgRVotVVNCIEZYMSBhbmQgRlgyIGRldmljZXMsIHByb2JhYmx5IGNydWNpYWwgZm9yIGJyaW5naW5nIHVwIGRldmljZXMgdXNpbmcgdGhvc2UgY2hpcHMuXG5cbk5leHQgdXAsIGBlZGdlX3N0YXJ0dXBgIGluIHRoZSBgaW9fZWRnZXBvcnQuY2AgZmlsZSBoYXMgY2F1Z2h0IG15IGV5ZSAtIHRoaXMgc2VlbXMgcmVsYXRlZCB0byBpbml0aWFsaXphdGlvbiBvciBhIGRldmljZS1zcGVjaWZpYyBzdGFydHVwIHJvdXRpbmUgd2l0aGluIHRoZSBFZGdlcG9ydCBzZXJpYWwgZHJpdmVyLiBGaW5hbGx5LCB0aGVyZSdzIGBpbXNfcGN1X2luaXRfYm9vdGxvYWRlcl9tb2RlYCBhbmQgaXRzIHBhcmVudCBgaW1zX3BjdV9wcm9iZWAgaW4gYGltcy1wY3UuY2AuIFNpbmNlIGBpbXNfcGN1X2luaXRfYm9vdGxvYWRlcl9tb2RlYCBpcyBjYWxsZWQgYnkgYGltc19wY3VfcHJvYmVgLCBJIGtub3cgdGhhdCBgaW1zX3BjdV9wcm9iZWAgaGFzIHRvIGJlIHRoZSBlbnRyeSBwb2ludCB0byBpbnZlc3RpZ2F0ZS4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIGhvdyBgaW1zX3BjdV9wcm9iZWAgZnVuY3Rpb25zLCB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYm9vdGxvYWRlciBtb2RlIGluaXRpYWxpemF0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIHRoYXQgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc4MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjIzLjA0NjQ5OTc5MVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1ODMyNjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbXNfcGN1X3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM9MjEwMD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgaW1zX3BjdV9kcml2ZXI7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAxLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM6MjEwMjpzdGF0aWMgaW50IGltc19wY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAzLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTIyNDQ9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGltc19wY3VfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMjQ3LVxcdC5kZXZfZ3JvdXBzXFx0XFx0PSBpbXNfcGN1X3N5c2ZzX2dyb3VwcyxcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjIyNDg6XFx0LnByb2JlXFx0XFx0XFx0PSBpbXNfcGN1X3Byb2JlLFxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtMjI0OS1cXHQuZGlzY29ubmVjdFxcdFxcdD0gaW1zX3BjdV9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODoyNS40MDQ4MzE2MzVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTMwMTUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IG1lbnRhbCBydW5kb3duOlxuXG4qKklkZW50aWZ5aW5nIEtleSBFbnRyeSBQb2ludHMgXHUwMDI2IERlcGVuZGVuY3kgQW5hbHlzaXMqKlxuXG5SaWdodCwgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgd2UgbmVlZCB0byBjb25jZW50cmF0ZSBvbi4gTXkgaW5pdGlhbCBsaXN0IGluY2x1ZGVzOiBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZWRnZV9zdGFydHVwYCwgYW5kIGBpbXNfcGN1X3Byb2JlYC4gU2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgY29tcHJlaGVuc2l2ZSByZXZpZXcuXG5cbk5vdywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEl0J3MgYSBodW5jaCBiYXNlZCBvbiBleHBlcmllbmNlLiBJIG5lZWQgdG8gc2VlIGlmIGFueSBvdGhlciBkcml2ZXJzIGluIHRoZSBzeXN0ZW0gYXJlIHBvdGVudGlhbGx5IGxldmVyYWdpbmcgZWl0aGVyIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgb3IgYGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBpcyB2aXRhbCBmb3IgYXZvaWRpbmcgdW5leHBlY3RlZCBzaWRlLWVmZmVjdHMgZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IGludGVyY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTcyLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjI5LjQ4NjEzNTIwMloiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNDM4NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTE5LVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxMjA6aW50IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyMS1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlX3BhdGgpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTI1OkVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI2LVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYz0xNjA1PXN0YXRpYyBpbnQga2V5c3Bhbl9mYWtlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMTY3Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjE2Nzc6XFx0aWYgKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cXHUwMDNlZGV2LCBmd19uYW1lKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jLTE2NzgtXFx0XFx0ZGV2X2VycihcXHUwMDI2c2VyaWFsLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFxcXFxcXFwiJXNcXFxcXFxcIlxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTYzNj1zdGF0aWMgaW50IGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjU3LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jOjY1ODpcXHRpZiAoZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVxcdTAwM2VkZXYsIGZ3X25hbWUpIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTY1OS1cXHRcXHRkZXZfZXJyKFxcdTAwMjZzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXFxcXFxcXCIlc1xcXFxcXFwiXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jPTE4Mz1zdGF0aWMgaW50IHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTg4OlxcdHJlc3BvbnNlID0gZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVxcdTAwM2VkZXYsIFxcXCJ3aGl0ZWhlYXRfbG9hZGVyLmZ3XFxcIik7XFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4OS1cXHRpZiAocmVzcG9uc2UgXFx1MDAzZT0gMCkge1xcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxOTA6XFx0XFx0cmVzcG9uc2UgPSBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzZXJpYWwtXFx1MDAzZWRldiwgXFxcIndoaXRlaGVhdC5md1xcXCIpO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xOTEtXFx0XFx0aWYgKHJlc3BvbnNlIFxcdTAwM2U9IDApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oPTU9ZXh0ZXJuIGludCBlenVzYl9meDFfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcXG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oOjY6ZXh0ZXJuIGludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbGludXgvdXNiL2V6dXNiLmgtNy1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjMxLjkxMDUyNzgwNVoiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NzIxNzM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9MTQxPUVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4Ml9zZXRfcmVzZXQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDItXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjE0MzppbnQgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ0LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDctfVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxNDg6RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDktI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjM0LjE4Nzc1MTAxWiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjIxODAyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIERvd25sb2FkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQgdmlhIFVTQiwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlc2UgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGluIGBrZXlzcGFuLmNgLCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCBpbiBga2V5c3Bhbl9wZGEuY2AsIGFuZCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpbiBgd2hpdGVoZWF0LmNgLiBNYWtlcyBzZW5zZTsgaXQncyBhIGNvbW1vbiBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSBmb3IgdGhvc2UgdHlwZXMgb2YgZGV2aWNlcy4gSSdsbCBmb2N1cyBvbiBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBmb3Igbm93LiBMZXQncyBkaWcgaW50byB0aGF0IG9uZSBhbmQgc2VlIGhvdyBpdCdzIHNwZWNpZmljYWxseSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBpdCBsZXZlcmFnZXMgdGhpcyBjb21tb24gZG93bmxvYWQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTMwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODozNy43NDk5MzU2OTVaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjYwMTc3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYz02Mj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgaWRfdGFibGVfY29tYmluZWQpO1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY1LS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBDb25uZWN0IFRlY2ggV2hpdGVIRUFUIHByZXJlbnVtZXJhdGlvbiBkZXZpY2UgKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6NjY6c3RhdGljIGludCAgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY3LVxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9ODg9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciB3aGl0ZWhlYXRfZmFrZV9kZXZpY2UgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtOTQtXFx0Lm51bV9wb3J0cyA9XFx0XFx0MSxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6OTU6XFx0LnByb2JlID1cXHRcXHR3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTk2LVxcdC5hdHRhY2ggPVxcdFxcdHdoaXRlaGVhdF9maXJtd2FyZV9hdHRhY2gsXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTU4PXN0YXRpYyBpbnQgZmlybV9yZXBvcnRfdHhfZG9uZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xODItKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTgzOnN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4NC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjQwLjI3NTk2MDI2NloiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkxODkwMzIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqUmVmbGVjdGluZyBvbiB0aGUgd2hpdGVoZWF0IEZpcm13YXJlIERvd25sb2FkIFByb2JlKipcblxuT2theSwgc28gSSdtIHByb2Nlc3NpbmcgdGhpcy4gSXQgbG9va3MgbGlrZSBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpcyBhY3RpbmcgYXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYHdoaXRlaGVhdF9mYWtlX2RldmljZWAuIFRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIG92ZXJhbGwgc3RyYXRlZ3kuIE5vdyB0aGF0IEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJvbGVzIGFuZCBjb25uZWN0aW9ucywgdGhlIG5leHQgaW1tZWRpYXRlIGFjdGlvbiBpdGVtIGlzIHRvIGFkZCBgVVNCX1NFUklBTF9XSElURUhFQVRgIHRvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGxpc3QuIEl0J3MgYSBrZXkgcGllY2UgdG8gbWFrZSB0aGUgZG93bmxvYWQgcHJvY2VzcyB3b3JrLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIGRldmljZSBwcm9wZXJseSBhbmQgZW5zdXJlIGl0IGNhbiBiZSB1cGRhdGVkIHRocm91Z2ggb3VyIHN0YW5kYXJkIG1ldGhvZHMuIEl0J3MgYSBzZWVtaW5nbHkgc21hbGwgc3RlcCwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhpcyBjb25maWcgbGlzdCB1cGRhdGVkLCBhcyBhIGZhaWx1cmUgb24gdGhpcyBwaWVjZSBjYW4gbGVhZCB0byB0aW1lLWNvbnN1bWluZyBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU4OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjUzLjE5NDg2NzAwOVoiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwMTM0ODQwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9MTA2PWNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTE1OmNvbmZpZyBVU0JfU0VSSUFMX1dISVRFSEVBVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIENvbm5lY3RUZWNoIFdoaXRlSEVBVCBTZXJpYWwgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODo1NS40OTYyMjYzNTNaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNTAwNTE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlOiBgVVNCX1NFUklBTF9XSElURUhFQVRgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBgVVNCX1NFUklBTF9XSElURUhFQVRgIC0gd2hhdOKAmXMgcmVseWluZyBvbiAqdGhpcyo/XCIgSSBrbm93IHRoZSBuYW1lLCBJJ3ZlIGxpa2VseSBzZWVuIGl0IGluIHRoZSBjb2RlYmFzZSAob3IgZXZlbiB3cml0dGVuIGl0ISkuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcHVsbCB1cCB0aGUgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIG1vZHVsZSBzaXRzIGluIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gSSdtIHRoaW5raW5nLCBcIkxldCdzIHRyYWNrIGRvd24gdGhvc2UgZGVwZW5kZW5jaWVzLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIHRoZSBzeXN0ZW0gbmVlZCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUuIElzIHRoaXMgYSBjb3JlIHBpZWNlIG9mIHNvbWUgbGFyZ2VyIGFic3RyYWN0aW9uIG9yIGp1c3QgYSBsb3ctbGV2ZWwgcGVyaXBoZXJhbCBkcml2ZXI/IFRoZSBhbnN3ZXJzIGRpY3RhdGUgbXkgYXBwcm9hY2ggdG8gYW55IHBvdGVudGlhbCBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5MjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTowMS44MTEyMzUwMTZaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExNTpcXHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuIDExNzpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAxMTg6XFx0XFx0aGVscFxcbiAxMTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhIENvbm5lY3RUZWNoIFdoaXRlSEVBVCA0IHBvcnRcXG4gMTIwOlxcdFxcdCAgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMjM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgd2hpdGVoZWF0LlxcbiAxMjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjAxLjgxMTM4NjY3NloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTY2MzcwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgRGV2aWNlIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgbm8gZXh0ZXJuYWwgbGlicmFyeSBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQsIHRoYXQncyBnb29kLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIFVTQiBkZXZpY2UuIEJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBVU0JfRVpVU0JfRlgyYCBpcyB0aGUgZGV2aWNlIG9mIGNob2ljZS4gTm93LCB0byB2ZXJpZnkgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhcnR1cCBzZXF1ZW5jZXMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAgYW5kIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gYmVnaW5zIHRvIGludGVyYWN0IHdpdGggdGhpcyBoYXJkd2FyZSBpbiBib3RoIHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMjIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjA1Ljk3Nzc1OTU0MloiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODM5NjI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZXlzcGFuX2Zha2Vfc3RhcnR1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTE1ODA9c3RhdGljIHZvaWQga2V5c3Bhbl9jbG9zZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA0LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIHByZS1yZW51bWVyYXRpb24gZGV2aWNlICovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYzoxNjA1OnN0YXRpYyBpbnQga2V5c3Bhbl9mYWtlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jLTE2MDYte1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYz0zMDA0PXN0YXRpYyBzdHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIga2V5c3Bhbl9wcmVfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0zMDEwLVxcdC5udW1fcG9ydHNcXHRcXHQ9IDEsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYzozMDExOlxcdC5hdHRhY2hcXHRcXHRcXHQ9IGtleXNwYW5fZmFrZV9zdGFydHVwLFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMzAxMi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTowOC4xODYxNTk3ODhaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzM4NTU4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTYxNz1zdGF0aWMgdm9pZCBrZXlzcGFuX3BkYV9jbG9zZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM1LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIFxcXCJmYWtlXFxcIiBkZXZpY2UgKHByZS1yZW51bWVyYXRpb24pICovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjM2OnN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTcwMT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIGtleXNwYW5fcGRhX2Zha2VfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNzA3LVxcdC5udW1fcG9ydHMgPVxcdFxcdDEsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NzA4OlxcdC5hdHRhY2ggPVxcdFxcdGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cCxcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy03MDktfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTAuNTIwMDIyMjMyWiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjgxNjY2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKklkZW50aWZ5aW5nIEtleSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBzeXN0ZW1zLCBhbmQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuIEkgc2VlIHNldmVyYWwgcG90ZW50aWFsbHkgcmVsZXZhbnQgb25lczogYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRWFjaCBvZiB0aGVzZSBzdWdnZXN0cyBhIGRpZmZlcmVudCBtZWNoYW5pc20gZm9yIGluaXRpYWxpemF0aW9uIG9yIGludGVyYWN0aW9uLiBHaXZlbiB3aGF0IEknbSB0cnlpbmcgdG8gZGV0ZXJtaW5lLCBhIHF1aWNrIGNoZWNrIG9mIGB2aWNhbWAgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0J3MgYWN0aXZhdGVkLiBMZXQncyBzZWUgaWYgdGhvc2UgZW50cnkgcG9pbnRzIGdpdmUgYSBjbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToxMy45NDgxOTE1M1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyODI3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2RfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MTY3PXN0YXRpYyB2b2lkIHZpY2FtX2Rvc3RyZWFtKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA0LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjA1Oi8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHByb2JlIHRpbWUganVzdCBiZWZvcmUgc2RfaW5pdCAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA2LXN0YXRpYyBpbnQgc2RfY29uZmlnKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjIzLS8qIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHByb2JlIGFuZCByZXN1bWUgdGltZSAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjI0OnN0YXRpYyBpbnQgc2RfaW5pdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjUte1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0yODA9c3RhdGljIHZvaWQgc2Rfc3RvcDAoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yOTMtXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyOTQ6c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldilcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5NS17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTMyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHNkX2Rlc2Mgc2RfZGVzYyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzI0LVxcdC5jb25maWcgPSBzZF9jb25maWcsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjU6XFx0LmluaXQgICA9IHNkX2luaXQsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjY6XFx0LmluaXRfY29udHJvbHMgPSBzZF9pbml0X2NvbnRyb2xzLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzI3LVxcdC5zdGFydCAgPSBzZF9zdGFydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTQuMDEwNDgzNjE5WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDAyNTI3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXNzZWN0aW5nIHRoZSBnc3BjYSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBnc3BjYSBkcml2ZXIsIGFuZCBJJ3ZlIHRyYWNlZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoZSB2aWNhbSBkZXZpY2UuIGBzZF9pbml0YCBpcyBjbGVhcmx5IHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQgZm9yIHRoZSB2aWRlbyBkZXZpY2UsIGFuZCBJIHNlZSB0aGF0IGBnc3BjYV9kZXZfcHJvYmUyYCBpcyB0aGUgb25lIGNhbGxpbmcgaXQuIFRoYXQncyBpbiB0aGUgYGdzcGNhLmNgIGZpbGUg4oCTIG1ha2VzIHNlbnNlLCB0aGUgY29yZSBvZiB0aGUgZ3NwY2EgZnJhbWV3b3JrLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYHNkX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBmb3IgdmljYW0uIFRoaXMgbGlrZWx5IHNldHMgdXAgdGhlIGRldmljZSdzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gYSBtYXRjaCB0byBhIFZJRC9QSUQgb3Igb3RoZXIgVVNCIGRlc2NyaXB0b3IgY3JpdGVyaWEuIFNvIGBzZF9wcm9iZWAgaXMgcHJvYmFibHkgY2FsbGluZyBgc2RfaW5pdGAgdG8ga2ljayB0aGluZ3Mgb2ZmIGFmdGVyIHRoZSBpbml0aWFsIGRldmljZSBpZGVudGlmaWNhdGlvbiwgc2V0dGluZyB1cCBidWZmZXJzLCBldGMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODQxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTcuMzUwNzQwMDU4WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc0MjUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RfZGVzYyBzZF9kZXNjID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMzEtLyogLS0gZGV2aWNlIGNvbm5lY3QgLS0gKi9cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjMzMjpzdGF0aWMgaW50IHNkX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzMzLVxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzQxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzZF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTM0My1cXHQuaWRfdGFibGUgICA9IGRldmljZV90YWJsZSxcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjM0NDpcXHQucHJvYmUgICAgICA9IHNkX3Byb2JlLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzQ1LVxcdC5kaXNjb25uZWN0ID0gZ3NwY2FfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTcuNDEzNDg4NTc3WiIsIlNlcSI6NzQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzQ2NTEzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogVVNCIENhbWVyYSBEcml2ZXIgRW50cnkgUG9pbnQgXHUwMDI2IFdEVCBDb25zaWRlcmF0aW9uKipcblxuQWxyaWdodCwgYW5vdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnQgdG8gZXhhbWluZSDigJMgYHNkX3Byb2JlYCBpbiBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2AuIEl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGlkZW50aWZ5IGFsbCB0aGUga2V5IHN0YXJ0aW5nIHBvaW50cyB3aGVuIHlvdSdyZSBkaWdnaW5nIGludG8gYSBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93LlxuXG5Ob3csIGxldCdzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCBgemlpcmF2ZV93ZHQuY2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlbGF0ZWQgdG8gd2F0Y2hkb2cgdGltZXIgZnVuY3Rpb25hbGl0eSwgcGVyaGFwcyB1c2VkIGZvciBlbnN1cmluZyB0aGUgY2FtZXJhIHJlbWFpbnMgcmVzcG9uc2l2ZSBvciBmb3IgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucy4gV2UgYXJlIGFzc3VtaW5nIGEgZGlyZWN0IGNvbm5lY3Rpb24sIG9yIGEgY29tcG9uZW50IG9mIHN1Y2ggYSBjb25uZWN0aW9uLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBoYXJkd2FyZSBmYWlsdXJlcyBhcmUgaGFuZGxlZCwgb3IgdGhlIGdlbmVyYWwgc3RhYmlsaXR5IG9mIGEgc3lzdGVtLCBzbyB0aGlzIGlzIGEga2V5IGFyZWEgdG8gYXNzZXNzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG92ZXJsYXAgb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgY2FtZXJhIGRyaXZlciBhbmQgdGhlIHdhdGNoZG9nIG1lY2hhbmlzbTsgdGhhdCBjb3VsZCBiZSByZWFsbHkgaW50ZXJlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mzg2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MjEuOTQ4MTQzMTE3WiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0Mzc3Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInppaXJhdmVfZmlybV92ZXJpZnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTI2OT1zdGF0aWMgaW50IHppaXJhdmVfZmlybV93cml0ZV9wa3Qoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5Mi1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM6MjkzOnN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5NC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz0zNDA9c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTEtXFx0LyogU3RhcnQgZmlybXdhcmUgdmVyaWZpY2F0aW9uICovXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjM5MjpcXHRyZXQgPSB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHdkZCwgZncpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToyNC4yMzI1MjU3OTJaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTExOTU1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemlpcmF2ZV9maXJtX3VwbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzM5LVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNDA6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzQxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTUwNj1zdGF0aWMgc3NpemVfdCB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MjQtXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjUyNTpcXHRlcnIgPSB6aWlyYXZlX2Zpcm1fdXBsb2FkKFxcdTAwMjZ3X3ByaXYtXFx1MDAzZXdkZCwgZncpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MjYtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToyNi41MjM3MjczMjdaIiwiU2VxIjo3NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5MjA2NjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIFN0b3JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHppaXJhdmVfd2R0X3N5c2ZzX3N0b3JlX2Zpcm1gLCB0aGF0J3MgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbiwgZ290IGl0LiBSaWdodCwgYW5kIHRoYXQgbWVhbnMgaXQncyBnb2luZyB0byBiZSB0cmlnZ2VyZWQgd2hlbmV2ZXIgc29tZW9uZSB3cml0ZXMgdG8gYSBzcGVjaWZpYyBzeXNmcyBmaWxlLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHN5c2ZzIGZpbGVzIHRoZW1zZWx2ZXMgYXJlIHRhcmdldHMgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgdGhpcyBmdW5jdGlvbiB3aXRoIGNyYWZ0ZWQgaW5wdXQuIE5vdywgbGV0J3Mgc2VlLi4uIEknbSB0aGlua2luZywgbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgemwzODA2MC5jYCBmaWxlLiBUaGF0J3MgdGhlIGxpa2VseSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjE1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjMxLjQxNTc5ODE1MloiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5ODk2Nzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDM4X2xvYWRfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTUxPXN0YXRpYyBpbnQgemwzOF9md19zZW5kX3hhZGRyKHN0cnVjdCByZWdtYXAgKnJlZ21hcCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE2MS1cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoxNjI6c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTYzLXtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTU1Mj1zdGF0aWMgaW50IHpsMzhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy01ODItXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM6NTgzOlxcdGVyciA9IHpsMzhfbG9hZF9maXJtd2FyZShkZXYsIHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTg0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjMzLjYxNDc3MjM1OFoiLCJTZXEiOjc5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0NjM2NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIHpsMzhfc3BpX3Byb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHpsMzhfc3BpX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcm9iZSBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgemwzODA2MGAgZGV2aWNlLiBUaGF0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCDigJMgaXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIgdG8gYmUgaW5pdGlhbGl6ZWQsIGxpa2VseSBoYW5kbGluZyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsIHNldHVwLiBOb3csIHNpbmNlIGl0IHJlbGF0ZXMgdG8gU1BJLCBteSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBTUEkgYnVzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBgaWxpMjEweC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwYXJhbGxlbHMgd2l0aCB0aGUgemwzODA2MCBzZXR1cC4gTWF5YmUgdGhlcmUncyBzb21lIGRlc2lnbiBlbGVtZW50IG9yIGltcGxlbWVudGF0aW9uIGRldGFpbCBJIGNhbiBnbGVhbiBmb3IgdXNlIGluIHRoZSB6bDM4MDYwIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzMwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MzYuODg5NDExMDY3WiIsIlNlcSI6ODAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAzMTM2ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jPTU5NT1zdGF0aWMgREVWSUNFX0FUVFIoY2FsaWJyYXRlLCBTX0lXVVNSLCBOVUxMLCBpbGkyMTB4X2NhbGlicmF0ZSk7XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk2LVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjU5NzpzdGF0aWMgY29uc3QgdTggKmlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk4LVxcdFxcdFxcdFxcdFxcdCAgICB1MTYgKmFjX2VuZCwgdTE2ICpkZl9lbmQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtODgyLVxcdGNvbnN0IHU4KiBmd2J1ZiBfX2ZyZWUoa3ZmcmVlKSA9XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM6ODgzOlxcdFxcdFxcdGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyKGZ3LCBcXHUwMDI2YWNfZW5kLCBcXHUwMDI2ZGZfZW5kKTtcXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy04ODQtXFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZndidWYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTozOS4yOTI1NTUwN1oiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc4MjI0NTEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZpbmluZyB0aGUgVGFyZ2V0IExpc3QgZm9yIEZpcm13YXJlIFVwZGF0ZSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmVgLCB3aGljaCBJIGtub3cgaXMgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbi4gIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMgaW50byB0aGUgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3MuICBJIHdhcyBpbml0aWFsbHkgZ2l2ZW4gYSBsaXN0IG9mIHBvc3NpYmlsaXRpZXMsIGluY2x1ZGluZyB0aGluZ3MgbGlrZSBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZWRnZV9zdGFydHVwYCwgYGltc19wY3VfcHJvYmVgLCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGtleXNwYW5fZmFrZV9zdGFydHVwYCwgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGAsIGBzZF9wcm9iZWAgKGluIGBkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jYCksIGB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtYCwgYHpsMzhfc3BpX3Byb2JlYCwgYW5kIHRoZSBpbml0aWFsIGZvY3VzLCBgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmVgIGl0c2VsZi5cblxuSSByZWFsaXplZCBJIGRvbid0IG5lZWQgKmFsbCogb2YgdGhlbSwganVzdCBhIGdvb2Qgc2VsZWN0aW9uLiBTbyBJIHN0YXJ0ZWQgd2l0aCBhIHNlbGVjdGlvbjogdGhlIGZpcnN0IHNldCBvZiB0aG9zZSBsaXN0ZWQuXG5cbk5vdywgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gIEkgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGZ1bmN0aW9ucyBhcyBlbnRyeSBwb2ludHMsIHNpbmNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBQcm9iZSBmdW5jdGlvbnMsIGZvciBpbnN0YW5jZSwgYXJlIHVzdWFsbHkgc3RhdGljLCBidXQgbm90IGlubGluZWQsIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBmb3IgcmVnaXN0cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGxpbmthZ2UgdG8gcHJvdmlkZSBnb29kIHNlbGVjdGlvbi5cblxuSSBtYWRlIGEgbm90ZSB0aGF0IGBzZF9wcm9iZWAgaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNoZWNrZWQgdG8gc2VlIGlmIGl0J3Mgc3RhdGljLiBJdCBpcywgaW4gYHZpY2FtLmNgLiBXaGlsZSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSB0YXJnZXRlZCwgSSB3YW50IHRvIHByaW9yaXRpemUgdGhlIG5vbi1zdGF0aWMgb25lcyBpZiBwb3NzaWJsZSwgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkkgdGhlbiBpZGVudGlmaWVkIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYW5kIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYXMgZXhwb3J0ZWQgc3ltYm9scywgc28gdGhleSdyZSBub24tc3RhdGljLiAgSSBhbHNvIGZvdW5kIHRoYXQgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAsIGBpaGV4X3ZhbGlkYXRlX2Z3YCwgYW5kIGBpaGV4X25leHRfYmlucmVjYCBhcmUgaW5saW5lIGZ1bmN0aW9ucywgc28gSSByZW1vdmVkIHRoZW0gZnJvbSBjb25zaWRlcmF0aW9uLlxuXG5UaGVyZWZvcmUsIG15IGJlc3QgdGFyZ2V0cyBhcmU6XG4tICAgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYFxuLSAgIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGBcbi0gICBgZW1pMjZfcHJvYmVgXG4tICAgYGVtaTYyX3Byb2JlYFxuLSAgIGBlZGdlX3N0YXJ0dXBgXG4tICAgYGltc19wY3VfcHJvYmVgXG4tICAgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGBcbi0gICBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgXG4tICAgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGBcblxuSSBkb3VibGUtY2hlY2tlZCBgZW1pMjZfcHJvYmVgIGFuZCBpdCAqaXMqIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzIGlzIHRha2VuLiBHaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gbGlzdCBqdXN0IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhbmQgYSBmZXcgaW1wb3J0YW50IHN0YXRpYyBwcm9iZSBmdW5jdGlvbnMuXG5cbk5leHQsIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9ucy4gVGhlIGNvbmZpZ3MgSSBoYXZlIGFyZTogYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEkgcmVtZW1iZXIgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBgVVNCX0dTUENBX1ZJQ0FNYCBkZXBlbmRzIG9uIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC5cblxuVGhlIGluc3RydWN0aW9ucyBzdGF0ZSB0byBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkIGZvciB0aGUgY29kZSB0byBjb21waWxlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiAgYFZJREVPX0RFVmAgaXMgc3RhbmRhcmQsIGJ1dCBgVVNCX0dTUENBYCBpcyBhIHN1YnN5c3RlbS5cblxuSSdtIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSBvbmVzIHdpdGggbm8gb3Igc2ltcGxlIGRlcGVuZGVuY2llczpcbi0gICBgSU5QVVRfSU1TX1BDVWAgKGRlcGVuZHMgb24gYFVTQmAsIGBMRURTX0NMQVNTYClcbi0gICBgVVNCX0VNSTI2YFxuLSAgIGBVU0JfRU1JNjJgXG4tICAgYFVTQl9TRVJJQUxfRURHRVBPUlRgXG4tICAgYFVTQl9TRVJJQUxfS0VZU1BBTmBcbi0gICBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWBcbi0gICBgVVNCX1NFUklBTF9XSElURUhFQVRgXG5cbkkgY2hlY2tlZCBgTEVEU19DTEFTU2AsIHdoaWNoIGlzIHN0YW5kYXJkLlxuXG5JIHdpbGwgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX1NFUklBTF9LRVlTUEFOYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgyOTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjU3LjA3NDgwMjUxMloiLCJTZXEiOjgyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTI6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTlxcbiAzMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclxcXCJcXG4gMzE0OlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMxNTpcXHRcXHRoZWxwXFxuIDMxNjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIEtleXNwYW4gVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXJcXG4gMzE3OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgZHJpdmVyIG1ha2VzIHVzZSBvZiBLZXlzcGFuJ3Mgb2ZmaWNpYWwgZmlybXdhcmVcXG4gMzE4OlxcdFxcdCAgYW5kIHdhcyBkZXZlbG9wZWQgd2l0aCB0aGVpciBzdXBwb3J0LiAgWW91IG11c3QgYWxzbyBpbmNsdWRlXFxuIDMxOTpcXHRcXHQgIGZpcm13YXJlIHRvIHN1cHBvcnQgeW91ciBwYXJ0aWN1bGFyIGRldmljZShzKS5cXG4gMzIwOlxcdFxcbiAzMjE6XFx0XFx0ICBTZWUgXFx1MDAzY2h0dHA6Ly9ibGVtaW5ncy5vcmcvaHVnaC9rZXlzcGFuLmh0bWxcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTo1Ny4wNzQ4ODQ1MzJaIiwiU2VxIjo4MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0MzY1MzI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogVVNCIFNlcmlhbCBLZXlTcGFuIFBEQSoqXG5cblJpZ2h0LCBubyBpbml0aWFsIGRlcGVuZGVuY2llcyBsZWFwaW5nIG91dCBhdCBtZS4gQWx3YXlzIGEgZ29vZCBzaWduLiBMZXQncyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcywgdGhvdWdoLiBUaW1lIHRvIGRyaWxsIGRvd24uIFRoZSBmaXJzdCBwb3J0IG9mIGNhbGwsIG5hdHVyYWxseSwgaXMgdG8gcmlnb3JvdXNseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIGFyZS4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gZ290Y2hhcyBvciBjb25mbGljdHMgbHVya2luZyBiZW5lYXRoIHRoZSBzdXJmYWNlLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV2YWx1YXRlIGl0cyBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDUwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzA6MDMuMDE4NTQzMzUyWiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDE6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG4gMzAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMzAzOlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMwNDpcXHRcXHRoZWxwXFxuIDMwNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGEgS2V5c3BhbiBQREEsIFhpcmNvbSBvciBFbnRyZWdhIHNpbmdsZVxcbiAzMDY6XFx0XFx0ICBwb3J0IFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS4gVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mXFxuIDMwNzpcXHRcXHQgIGZpcm13YXJlIGRldmVsb3BlZCBmcm9tIHNjcmF0Y2ggYnkgQnJpYW4gV2FybmVyLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzMTA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjMwOjAzLjAxODczNzk3MloiLCJTZXEiOjg1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzgzMTg0ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBBIFByZXJlcXVpc2l0ZSoqXG5cbkFscmlnaHQsIG5vIGltbWVkaWF0ZSBzaG93c3RvcHBlcnMgZmxhZ2dlZCBpbml0aWFsbHkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZHJpbGwgZG93bi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHZlcmlmeSBkZXBlbmRlbmNpZXMgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy4gTm8gYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX1NFUklBTF9XSElURUhFQVRgLiBVbmRlcnN0YW5kIHdoYXQgaXMgbGlua2VkIHRvIHRoaXMgbW9kdWxlIHRvIGF2b2lkIGJyZWFraW5nIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0J3MgdGllZCBpbnRvIHRoYXQuIEdvdHRhIGtub3cgd2hlcmUgd2Ugc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODcxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozMDowNS44MDE5MjY2NDFaIiwiU2VxIjo4NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExNTpcXHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuIDExNzpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAxMTg6XFx0XFx0aGVscFxcbiAxMTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhIENvbm5lY3RUZWNoIFdoaXRlSEVBVCA0IHBvcnRcXG4gMTIwOlxcdFxcdCAgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMjM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgd2hpdGVoZWF0LlxcbiAxMjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjMwOjA1LjgwMjA1OTU0MVoiLCJTZXEiOjg3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzYwNjA5NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBsYW46IFVTQiBGaXJtd2FyZSBQYXJzaW5nIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTm8gZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBnb29kIOKAkyBpdCBtYWtlcyB0aGluZ3Mgc2ltcGxlci4gRXNzZW50aWFsbHksIHRoZSBjb3JlIHByb2JsZW0gaXMgcmVsYXRlZCB0byBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgYW4gaW5maW5pdGUgbG9vcCB3aXRoaW4gdGhlIEludGVsIEhFWCBmaXJtd2FyZSBwYXJzaW5nIHJvdXRpbmVzLCBzcGVjaWZpY2FsbHkgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGFyZSBjcnVjaWFsIGZvciBhIGhhbmRmdWwgb2YgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgdGhlaXIgZmlybXdhcmUuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgYW5kIHBhc3MgdGhlbSB2aWEgYHJlcXVlc3RfZmlybXdhcmVgLlxuXG5TbywgdGhlIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBmb2N1cyBvbiB0byBlbmFibGUgYW5kIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2dWxuZXJhYmlsaXR5IGFyZTogYElOUFVUX0lNU19QQ1VgLCBgTEVEU19DTEFTU2AsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgLCBgVVNCX1NFUklBTF9LRVlTUEFOYCwgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgLCBhbmQgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYC4gVGhlc2UgZW5hYmxlIHRoZSB0YXJnZXQgVVNCIGRyaXZlcnMuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgbmVlZCBteSBhdHRlbnRpb24sIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBmb3IgdGhlIGFmb3JlbWVudGlvbmVkIFVTQiBkcml2ZXJzLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24gaGFwcGVuLiBIZXJlJ3MgYSBydW5kb3duOiBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZWRnZV9zdGFydHVwYCwgYGltc19wY3VfcHJvYmVgLCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGtleXNwYW5fZmFrZV9zdGFydHVwYCwgYW5kIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgLiBGdXp6aW5nIHRoZXNlIHNob3VsZCBiZSBhIGdvb2QgcGxhbiB0byBleGVyY2lzZSB0aGUgdnVsbmVyYWJsZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlIHBhdGggdG8gdmFsaWRhdGluZyB0aGlzIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyMDYsIk91dHB1dFRva2VucyI6MzA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzA6MTMuNTYyNjczMzU0WiIsIlNlcSI6ODgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMzY4OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTlBVVF9JTVNfUENVXCIsXG4gICAgXCJMRURTX0NMQVNTXCIsXG4gICAgXCJVU0JfRU1JMjZcIixcbiAgICBcIlVTQl9FTUk2MlwiLFxuICAgIFwiVVNCX1NFUklBTF9FREdFUE9SVFwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5fUERBXCIsXG4gICAgXCJVU0JfU0VSSUFMX1dISVRFSEVBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZW1pMjZfcHJvYmVcIixcbiAgICBcImVtaTYyX3Byb2JlXCIsXG4gICAgXCJlZGdlX3N0YXJ0dXBcIixcbiAgICBcImltc19wY3VfcHJvYmVcIixcbiAgICBcIndoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwia2V5c3Bhbl9mYWtlX3N0YXJ0dXBcIixcbiAgICBcImtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTlBVVF9JTVNfUENVXCIsXG4gICAgXCJMRURTX0NMQVNTXCIsXG4gICAgXCJVU0JfRU1JMjZcIixcbiAgICBcIlVTQl9FTUk2MlwiLFxuICAgIFwiVVNCX1NFUklBTF9FREdFUE9SVFwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5fUERBXCIsXG4gICAgXCJVU0JfU0VSSUFMX1dISVRFSEVBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZW1pMjZfcHJvYmVcIixcbiAgICBcImVtaTYyX3Byb2JlXCIsXG4gICAgXCJlZGdlX3N0YXJ0dXBcIixcbiAgICBcImltc19wY3VfcHJvYmVcIixcbiAgICBcIndoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwia2V5c3Bhbl9mYWtlX3N0YXJ0dXBcIixcbiAgICBcImtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 09:23:58 +0000 UTC FinishedAt: 2026-08-03 09:30:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INPUT_IMS_PCU", "LEDS_CLASS", "USB_EMI26", "USB_EMI62", "USB_SERIAL_EDGEPORT", "USB_SERIAL_KEYSPAN", "USB_SERIAL_KEYSPAN_PDA", "USB_SERIAL_WHITEHEAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INPUT_IMS_PCU", "LEDS_CLASS", "USB_EMI26", "USB_EMI62", "USB_SERIAL_EDGEPORT", "USB_SERIAL_KEYSPAN", "USB_SERIAL_KEYSPAN_PDA", "USB_SERIAL_WHITEHEAT" ], "series_id": "f0f59ccd-c775-4f8d-8269-b9595eef6c5c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ezusb_fx1_ihex_firmware_download", "ezusb_fx2_ihex_firmware_download", "emi26_probe", "emi62_probe", "edge_startup", "ims_pcu_probe", "whiteheat_firmware_download", "keyspan_fake_startup", "keyspan_pda_fake_startup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lOUFVUX0lNU19QQ1UmIzM0OywKICAgICYjMzQ7TEVEU19DTEFTUyYjMzQ7LAogICAgJiMzNDtVU0JfRU1JMjYmIzM0OywKICAgICYjMzQ7VVNCX0VNSTYyJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfRURHRVBPUlQmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfS0VZU1BBTl9QREEmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9XSElURUhFQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlbWkyNl9wcm9iZSYjMzQ7LAogICAgJiMzNDtlbWk2Ml9wcm9iZSYjMzQ7LAogICAgJiMzNDtlZGdlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7aW1zX3BjdV9wcm9iZSYjMzQ7LAogICAgJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9mYWtlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjI1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaWhleC5oIGIvaW5jbHVkZS9saW51eC9paGV4LmhcbmluZGV4IGI4MjQ4NzdlNmQxYjYuLjRlZTRiNTk2MGY4MmYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2loZXguaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9paGV4LmhcbkBAIC0zOCw5ICYjNDM7MzgsMTMgQEAgX19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuIHN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpcbiBpaGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuIHtcbi1cdHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqbmV4dDtcbiBcbi1cdHJldHVybiBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSA/IHJlYyA6IE5VTEw7XG4mIzQzO1x0aWYgKCFiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRuZXh0ID0gX19paGV4X25leHRfYmlucmVjKHJlYyk7XG4mIzQzO1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xuIH1cbiBcbiAvKiBDaGVjayB0aGF0IGloZXhfbmV4dF9iaW5yZWMoKSB3b24mIzM5O3QgdGFrZSB1cyBvZmYgdGhlIGVuZCBvZiB0aGUgaW1hZ2UuLi4gKi9cbkBAIC00OCw2ICYjNDM7NTIsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGloZXhfYmlucmVjICplbmQsICpyZWM7XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqZW5kKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdHJlYyA9IChjb25zdCB2b2lkICopZnctXHUwMDNlZGF0YTtcbiBcdGVuZCA9IChjb25zdCB2b2lkICopXHUwMDI2ZnctXHUwMDNlZGF0YVtmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCplbmQpXTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5QVVRfSU1TX1BDVSYjMzQ7LAogICAgJiMzNDtMRURTX0NMQVNTJiMzNDssCiAgICAmIzM0O1VTQl9FTUkyNiYjMzQ7LAogICAgJiMzNDtVU0JfRU1JNjImIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX0tFWVNQQU4mIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOX1BEQSYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2VtaTI2X3Byb2JlJiMzNDssCiAgICAmIzM0O2VtaTYyX3Byb2JlJiMzNDssCiAgICAmIzM0O2VkZ2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDssCiAgICAmIzM0O3doaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX2Zha2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjZmOTZiOWQ0ZWVhYjA1MjA1MjA4MTExM2U4NjU3N2NkNmUyZmVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDk6MjU6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2loZXguaCBiL2luY2x1ZGUvbGludXgvaWhleC5oCmluZGV4IGI4MjQ4NzdlNmQxYjYuLjRlZTRiNTk2MGY4MmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaWhleC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaWhleC5oCkBAIC0zOCw5ICYjNDM7MzgsMTMgQEAgX19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKQogc3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKgogaWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYykKIHsKLQlyZWMgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTsKJiM0MzsJY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpuZXh0OwogCi0JcmV0dXJuIGJlMTZfdG9fY3B1KHJlYy0mZ3Q7bGVuKSA/IHJlYyA6IE5VTEw7CiYjNDM7CWlmICghYmUxNl90b19jcHUocmVjLSZndDtsZW4pKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CW5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTsKJiM0MzsJcmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtJmd0O2xlbikgPyBuZXh0IDogTlVMTDsKIH0KIAogLyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJiMzOTt0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovCkBAIC00OCw2ICYjNDM7NTIsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpCiB7CiAJY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICplbmQsICpyZWM7CiAKJiM0MzsJaWYgKGZ3LSZndDtzaXplICZsdDsgc2l6ZW9mKCplbmQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcmVjID0gKGNvbnN0IHZvaWQgKilmdy0mZ3Q7ZGF0YTsKIAllbmQgPSAoY29uc3Qgdm9pZCAqKSZhbXA7ZnctJmd0O2RhdGFbZnctJmd0O3NpemUgLSBzaXplb2YoKmVuZCldOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJSEVYIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW5jbHVkZS9saW51eC9paGV4LmhgLCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgdHdvIGZ1bmN0aW9uczogYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgaWhleF9uZXh0X2JpbnJlY2AgaGFzIGhhZCBhIHNhZmV0eSBjaGVjayBhZGRlZC4gQmVmb3JlIGNhbGxpbmcgYF9faWhleF9uZXh0X2JpbnJlYyhyZWMpYCwgaXQgbm93IHZlcmlmaWVzIHRoZSBsZW5ndGgsIGByZWMtJmd0O2xlbmAuIFNtYXJ0IG1vdmU7IHRoYXQgY291bGQgcHJldmVudCBzb21lIG5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgaWhleF92YWxpZGF0ZV9md2AuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBhZGRpbmcgYSBjaGVjayB0byBzZWUgaWYgdGhlIGFsbG9jYXRlZCBmaXJtd2FyZSBzaXplIChgZnctJmd0O3NpemVgKSBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGBlbmRgIHJlY29yZCBiZWZvcmUgc2V0dGluZyB0aGUgYGVuZGAgYW5kIGByZWNgIHBvaW50ZXJzLiBUaGlzIGxpa2VseSBhaW1zIHRvIGF2b2lkIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBkdXJpbmcgdGhlIHBhcnNpbmcgcHJvY2Vzcy4gSXQmIzM5O3MgYSBwcnVkZW50IGFkZGl0aW9uLCBkZWZpbml0ZWx5IG1ha2VzIHRoZSBjb2RlIG1vcmUgcm9idXN0LgoKTm93LCBteSBuZXh0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqdXNlZCo/IEkgbmVlZCB0byBzZWUgdGhlIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2Ugb2YgYm90aCBgaWhleF92YWxpZGF0ZV9md2AgYW5kIGBpaGV4X25leHRfYmlucmVjYCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZSB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGFkZHJlc3NlZCBhbmQgdGhlIG92ZXJhbGwgZWZmZWN0IG9uIHRoZSBJSEVYIHBhcnNpbmcgaW1wbGVtZW50YXRpb24uIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2loZXhfdmFsaWRhdGVfZncmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz05Njc9c3RhdGljIHZvaWQgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqX2Z3LFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTc5LVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzo5ODA6XHRlcnJvciA9IGloZXhfdmFsaWRhdGVfZncoZncpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05ODEtXHRpZiAoZXJyb3IpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2loZXguaD0zOT1paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTUwLS8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbiYjMzk7dCB0YWtlIHVzIG9mZiB0aGUgZW5kIG9mIHRoZSBpbWFnZS4uLiAqL1xuaW5jbHVkZS9saW51eC9paGV4Lmg6NTE6c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuaW5jbHVkZS9saW51eC9paGV4LmgtNTIte1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcbi0tXG5pbmNsdWRlL2xpbnV4L2loZXguaC04MC1cdFx0cmV0dXJuIHJldDtcbmluY2x1ZGUvbGludXgvaWhleC5oOjgxOlx0cmV0ID0gaWhleF92YWxpZGF0ZV9mdyhsZncpO1xuaW5jbHVkZS9saW51eC9paGV4LmgtODItXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWhleF9uZXh0X2JpbnJlYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTgxMD1zdGF0aWMgdW5zaWduZWQgaW50IGltc19wY3VfY291bnRfZndfcmVjb3Jkcyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtODE2LVx0XHRjb3VudCYjNDM7JiM0Mzs7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjgxNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTgtXHR9XG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz04Njg9c3RhdGljIGludCBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlKHN0cnVjdCBpbXNfcGN1ICpwY3UsXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjYtXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjkyNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjgtXHR9XG4tLVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9NTk3PXN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy02MjgtXHRcdG1lbWNweShmd19idWYgJiM0MzsgZndfYWRkciwgcmVjLVx1MDAzZWRhdGEsIGZ3X2xlbik7XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo2Mjk6XHRcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTYzMC1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTIyND1zdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQzLVx0fVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyNDQ6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQ1LVx0XHRsZW4gPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9NzE9c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xMTYtXHRcdFx0Z290byB3cmFwZXJyO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjExNzpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTExOC1cdH1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTM3LVx0XHRcdGkgJiM0Mzs9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjEzODpcdFx0XHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTM5LVx0XHR9XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE1MS1cdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE1MjpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNTMtXHRcdGVyciA9IGVtaTI2X3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVx1MDAzZWFkZHIpLFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNjgtXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE2OTpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNzAtXHRcdGlmICghSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg0LVx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzoxODU6XHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg2LVx0XHRpZiAoSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9Nzk9c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xMjMtXHRcdFx0Z290byB3cmFwZXJyO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjEyNDpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEyNS1cdH1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTQ0LVx0XHRcdGkgJiM0Mzs9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE0NTpcdFx0XHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTQ2LVx0XHR9XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE1OC1cdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE1OTpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNjAtXHRcdGVyciA9IGVtaTYyX3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVx1MDAzZWFkZHIpLFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzUtXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE3NjpcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzctXHRcdGlmICghSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkxLVx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzoxOTI6XHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkzLVx0XHRpZiAoSU5URVJOQUxfUkFNKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKSkpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTc4LVx0cmVjb3JkID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWZpcm13YXJlLVx1MDAzZWRhdGE7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6Nzk6XHRmb3IgKDsgcmVjb3JkOyByZWNvcmQgPSBpaGV4X25leHRfYmlucmVjKHJlY29yZCkpIHtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy04MC1cdFx0aWYgKGJlMzJfdG9fY3B1KHJlY29yZC1cdTAwM2VhZGRyKSBcdTAwM2UgZngubWF4X2ludGVybmFsX2FkcmVzcykge1xuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy05OC1cdHJlY29yZCA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZS1cdTAwM2VkYXRhO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjk5Olx0Zm9yICg7IHJlY29yZDsgcmVjb3JkID0gaWhleF9uZXh0X2JpbnJlYyhyZWNvcmQpKSB7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTAwLVx0XHRpZiAoYmUzMl90b19jcHUocmVjb3JkLVx1MDAzZWFkZHIpIFx1MDAzYz0gZngubWF4X2ludGVybmFsX2FkcmVzcykge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTMxMD1zdGF0aWMgdm9pZCB1cGRhdGVfZWRnZXBvcnRfRTJQUk9NKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTM3MS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjM3MjpcdFx0Zm9yIChyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7IHJlYztcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjM3MzpcdFx0ICAgICByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTM3NC1cdFx0XHRCb290YWRkciA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0yNjI3PXN0YXRpYyB2b2lkIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmUoc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY3My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NzQ6XHRmb3IgKHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTsgcmVjO1xuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY3NTpcdCAgICAgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjc2LVx0XHRPcGVyYWRkciA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VhZGRyKTtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMwMC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozMDE6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zMDItXHRcdGNvbnN0IHUxNiBsZW4gPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MzQwPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3VwbG9hZChzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM3MC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNzE6XHRmb3IgKHJlYyA9ICh2b2lkICopZnctXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zNzItXHRcdHJldCA9IHppaXJhdmVfZmlybV93cml0ZV9wa3Qod2RkLCBiZTMyX3RvX2NwdShyZWMtXHUwMDNlYWRkciksXG4tLVxuaW5jbHVkZS9saW51eC9paGV4Lmg9MzA9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxuaW5jbHVkZS9saW51eC9paGV4Lmg6MzE6X19paGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxuaW5jbHVkZS9saW51eC9paGV4LmgtMzIte1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oPTM4PXN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpcbmluY2x1ZGUvbGludXgvaWhleC5oOjM5OmloZXhfbmV4dF9iaW5yZWMoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICpyZWMpXG5pbmNsdWRlL2xpbnV4L2loZXguaC00MC17XG4tLVxuaW5jbHVkZS9saW51eC9paGV4LmgtNDUtXG5pbmNsdWRlL2xpbnV4L2loZXguaDo0NjpcdG5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbmluY2x1ZGUvbGludXgvaWhleC5oLTQ3LVx0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTQ5LVxuaW5jbHVkZS9saW51eC9paGV4Lmg6NTA6LyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJiMzOTt0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXG5pbmNsdWRlL2xpbnV4L2loZXguaC01MS1zdGF0aWMgaW5saW5lIGludCBpaGV4X3ZhbGlkYXRlX2Z3KGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuaW5jbHVkZS9saW51eC9paGV4LmgtNjAtXG5pbmNsdWRlL2xpbnV4L2loZXguaDo2MTpcdGZvciAoOyByZWMgXHUwMDNjPSBlbmQ7IHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XG5pbmNsdWRlL2xpbnV4L2loZXguaC02Mi1cdFx0LyogWmVybyBsZW5ndGggbWFya3MgZW5kIG9mIHJlY29yZHMgKi9cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYz0xNjI9c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXG4tLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTk5LVx0XHQvKiBuZXh0ICEgKi9cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjIwMDpcdFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMjAxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMTQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaWhleCBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcywgc3BlY2lmaWNhbGx5IGJ5IG1vZGlmeWluZyBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YCB3aXRoaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgbG93LWxldmVsIGZpeCB0aGF0IGNvdWxkIGhhdmUgYSB3aWRlIGltcGFjdCwgd2hpY2ggaXMgYm90aCBpbnRyaWd1aW5nIGFuZCBwb3RlbnRpYWxseSBjcml0aWNhbC4KClRoZSBpc3N1ZSBzZWVtcyB0byBzdGVtIGZyb20gYSBsYWNrIG9mIHJvYnVzdCBib3VuZGFyeSBjaGVja2luZyB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLiBgaWhleF9uZXh0X2JpbnJlY2Agbm93IGdhaW5zIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIHdoZW4gYHJlYy0mZ3Q7bGVuYCBpcyAwLiBBIHplcm8gbGVuZ3RoIHJlY29yZCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgZmlsZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgbWFsZm9ybWVkIEhFWCBmaWxlIHRoYXQgZXJyb25lb3VzbHkgc3BlY2lmaWVzIHRoZSBmaWxlIGhhcyBhIHJlY29yZCwgYnV0IHdpdGggbGVuZ3RoIDAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYGloZXhfdmFsaWRhdGVfZndgIG5vdyBjaGVja3MgaWYgdGhlIGZpcm13YXJlIHNpemUgYGZ3LSZndDtzaXplYCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBlbmQgbWFya2VyIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGVuZCBtYXJrZXIuCgpUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBhIGNhcmVmdWxseSBjcmFmdGVkLCBtYWxpY2lvdXMgSW50ZWwgSEVYIGZpbGUgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgYW4gaW5maW5pdGUgbG9vcCBkdXJpbmcgZmlybXdhcmUgcGFyc2luZy4gR2l2ZW4gdGhhdCBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCAoYW5kIGxpa2VseSBgcmVxdWVzdF9maXJtd2FyZWAgaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2UpIGFyZSB1c2VkIGJ5IGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGRyaXZlcnMgYWNyb3NzIHZhcmlvdXMgc3Vic3lzdGVtcywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIHJlbGF0aXZlbHkgbGFyZ2UuIEkgc2VlIGl0JiMzOTtzIHVzZWQgaW4gZHJpdmVycyBmb3IgaW5wdXQgZGV2aWNlcyAobGlrZSB0b3VjaHNjcmVlbnMgYW5kIHRoZSBJTVMgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdCksIG1lZGlhIGRldmljZXMgKFVTQiBjYW1lcmFzKSwgVVNCIGF1ZGlvIGludGVyZmFjZXMsIFVTQiBzZXJpYWwgZHJpdmVycywgd2F0Y2hkb2cgdGltZXJzLCBhbmQgYXVkaW8gY29kZWNzLiBUaGF0JiMzOTtzIGEgZGl2ZXJzZSByYW5nZSwgYW5kIGVhY2ggY291bGQgYmUgc3VzY2VwdGlibGUuCgpUaGUgcGF0Y2ggbWVudGlvbnMgaG93IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB2aWEgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YC4gVGhpcyBpcyBrZXkuIFRoZSBmYWN0IHRoYXQgdGhlIGtlcm5lbCBoYXMgYW4gZXN0YWJsaXNoZWQgZnV6emluZyBmcmFtZXdvcmsgdGhhdCBjYW4gZGlyZWN0bHkgdHJpZ2dlciB0aGVzZSBmaXJtd2FyZSBsb2FkaW5nIHBhdGhzIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiBtYWtlcyB0aGUgdnVsbmVyYWJpbGl0eSBpbmNyZWRpYmx5IHJpcGUgZm9yIGV4cGxvaXRhdGlvbiBhbmQgZGlzY292ZXJ5LiBJdCBzZWVtcyBsaWtlIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciBpcyBub3Qgb3Zlcmx5IGNvbXBsaWNhdGVkLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgaGlnaC1wcmlvcml0eSBhcmVhIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZHJpdmVycyBsaXN0ZWQsIHdpdGggYSBwYXJ0aWN1bGFyIGVtcGhhc2lzIG9uIGdlbmVyYXRpbmcgYW5kIGZlZWRpbmcgdGhlbSBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpbGVzLiBXZSBjYW4gZ2V0IGEgbG90IG9mIG1pbGVhZ2UgYnkgY2hlY2tpbmcgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgYW5kIGl0JiMzOTtzIHVzYWdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2loZXhfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0xMjA0PXN0YXRpYyBzc2l6ZV90IGltc19wY3VfdXBkYXRlX2Zpcm13YXJlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTEyMjAtXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3IF9fZnJlZShmaXJtd2FyZSkgPSBOVUxMO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoxMjIxOlx0ZXJyb3IgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZncsIElNU19QQ1VfRklSTVdBUkVfTkFNRSwgcGN1LVx1MDAzZWRldik7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTEyMjItXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg3NC1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgX19mcmVlKGZpcm13YXJlKSA9IE5VTEw7XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo4NzU6XHRlcnJvciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZnduYW1lLCBkZXYpO1xuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtODc2LVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0yMjQ9c3RhdGljIGludCBzZF9pbml0KHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTIzMS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjMyOlx0cmV0ID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmZ3LCBWSUNBTV9GSVJNV0FSRSxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjMzLVx0XHRcdFx0ICAgIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9NzE9c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04NS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzo4NjpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZsb2FkZXJfZncsIFwmIzM0O2VtaTI2L2xvYWRlci5md1wmIzM0OywgXHUwMDI2ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04OS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzo5MDpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZiaXRzdHJlYW1fZncsIFwmIzM0O2VtaTI2L2JpdHN0cmVhbS5md1wmIzM0OyxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05MS1cdFx0XHRcdCAgICBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtOTQtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTU6XHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZmlybXdhcmVfZncsIFwmIzM0O2VtaTI2L2Zpcm13YXJlLmZ3XCYjMzQ7LFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTk2LVx0XHRcdFx0ICAgIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz03OT1zdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk0LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk1Olx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmxvYWRlcl9mdywgXCYjMzQ7ZW1pNjIvbG9hZGVyLmZ3XCYjMzQ7LCBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy05Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk4LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk5Olx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFx1MDAyNmJpdHN0cmVhbV9mdywgXCYjMzQ7ZW1pNjIvYml0c3RyZWFtLmZ3XCYjMzQ7LFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwMC1cdFx0XHRcdCAgICBcdTAwMjZkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTAzLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjEwNDpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmaXJtd2FyZV9mdywgRklSTVdBUkVfRlcsIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwNS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTY1LVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjY2Olx0aWYgKHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmaXJtd2FyZSwgZmlybXdhcmVfcGF0aCxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy02Ny1cdFx0XHRcdCAgXHUwMDI2ZGV2LVx1MDAzZWRldikpIHtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0zMTA9c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMzQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMzU6XHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNi1cdFx0XHRcdFx0IFx1MDAyNmVkZ2Vfc2VyaWFsLVx1MDAzZXNlcmlhbC1cdTAwM2VkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0yNjI3PXN0YXRpYyB2b2lkIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmUoc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY1Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NTc6XHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NTgtXHRcdFx0XHQgICAgXHUwMDI2ZWRnZV9zZXJpYWwtXHUwMDNlc2VyaWFsLVx1MDAzZWRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz01MDY9c3RhdGljIHNzaXplX3QgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTUxNC1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzo1MTU6XHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXHUwMDI2ZncsIFpJSVJBVkVfRldfTkFNRSwgZGV2KTtcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MTYtXHRpZiAoZXJyKSB7XG4tLVxuaW5jbHVkZS9saW51eC9paGV4Lmg9NTE9c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmluY2x1ZGUvbGludXgvaWhleC5oLTcwLSAqIHJ1biBvZmYgdGhlIGVuZCB3aGlsZSByZWFkaW5nIHJlY29yZHMuLi4gKi9cbmluY2x1ZGUvbGludXgvaWhleC5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcbmluY2x1ZGUvbGludXgvaWhleC5oLTcyLVx0XHRcdFx0XHRjb25zdCBjaGFyICpmd19uYW1lLFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTE2Mj1zdGF0aWMgaW50IHpsMzhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcClcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNzctXHQgKi9cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjE3ODpcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcdTAwMjZmdywgXCYjMzQ7emwzODA2MC5md1wmIzM0OywgZGV2KTtcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE3OS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0MAoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIFZ1bG5lcmFibGUgRmlybXdhcmUgVmFsaWRhdGlvbioqCgpPa2F5LCBzbyB0aGUgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoLCBJIGtub3csIGlzIHNvbWV0aGluZyBTeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUuIFdlIGNhbiBmZWVkIGl0IGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyBkaXJlY3RseS4gVGhpcyBtZWFucywgaWYgdGhlcmUmIzM5O3MgYSB2dWxuZXJhYmlsaXR5IGluIGBpaGV4X3ZhbGlkYXRlX2Z3YCBhZnRlciBgcmVxdWVzdF9maXJtd2FyZWAsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaXQgd2l0aCBTeXprYWxsZXIuIEV4Y2VsbGVudC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIHRoaXMgZmxvdy4gV2UgbmVlZCB0byBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbnMuCgpSaWdodCwgbGV0JiMzOTtzIGxpc3QgdGhlbSBvdXQ6IGBkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jYCB1c2VzIGBDT05GSUdfSU5QVVRfSU1TX1BDVWAsIGBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguY2AgLSZndDsgYENPTkZJR19UT1VDSFNDUkVFTl9JTEkyMTBYYCwgYGRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmNgIC0mZ3Q7IGBDT05GSUdfVVNCX0dTUENBX1ZJQ0FNYCwgYGRyaXZlcnMvdXNiL21pc2MvZW1pMjYuY2AgLSZndDsgYENPTkZJR19VU0JfRU1JMjZgLCBgZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jYCAtJmd0OyBgQ09ORklHX1VTQl9FTUk2MmAsIGBkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmNgIC0mZ3Q7IGBDT05GSUdfVVNCX0VaVVNCYCAoaW1wb3J0YW50LCBiZWNhdXNlIGV2ZW4gaWYgbm90IGEgbW9kdWxlIGRpcmVjdGx5LCBvdGhlcnMgbWF5IHVzZSBpdCEpLCBgZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmNgIC0mZ3Q7IGBDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVGAsIGBkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmNgIC0mZ3Q7IGBDT05GSUdfWklJUkFWRV9XQVRDSERPR2AsIGFuZCBmaW5hbGx5LCBgc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmNgIC0mZ3Q7IGBDT05GSUdfU05EX1NPQ19aTDM4MDYwYC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5QVVRfSU1TX1BDVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZz03ODU9Y29uZmlnIElOUFVUX0lCTV9QQU5FTFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnLTgwMi1cbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnOjgwMzpjb25maWcgSU5QVVRfSU1TX1BDVVxuZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWctODA0LVx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZz00Nzg9Y29uZmlnIFRPVUNIU0NSRUVOX0hZTklUUk9OX0NTVDgxNlhcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWctNDg5LVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnOjQ5MDpjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnLTQ5MS1cdHRyaXN0YXRlIFwmIzM0O0lsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfR1NQQ0FfVklDQU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9HU1BDQV9WQzAzMlhcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnLTQyMi1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWc6NDIzOmNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7VmlDYW0gVVNCIENhbWVyYSBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9FTUkyNiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MzY9Y29uZmlnIFVTQl9FTUk2MlxuLS1cbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy00OS1cbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZzo1MDpjb25maWcgVVNCX0VNSTI2XG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctNTEtXHR0cmlzdGF0ZSBcJiMzNDtFTUkgMnw2IFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0VNSTYyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz03PWNvbmZpZyBVU0JfVVNTNzIwXG4tLVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTM1LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjM2OmNvbmZpZyBVU0JfRU1JNjJcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0VNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0yMDU9Y29uZmlnIFVTQl9TRVJJQUxfSVJcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyMTU6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMzktXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaSUlSQVZFX1dBVENIRE9HJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZz0zNTU9Y29uZmlnIFhJTElOWF9XSU5ET1dfV0FUQ0hET0dcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMzcyLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnOjM3Mzpjb25maWcgWklJUkFWRV9XQVRDSERPR1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlIFwmIzM0O1pvZGlhYyBSQVZFIFdhdGNoZG9nIFRpbWVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DX1pMMzgwNjAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL2NvZGVjcy9LY29uZmlnPTI3NjU9Y29uZmlnIFNORF9TT0NfV1NBODg0WFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0yNzcyLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjI3NzM6Y29uZmlnIFNORF9TT0NfWkwzODA2MFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTI3NzQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3JcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NjEKCQkJCQkJCW91dHB1dDogMjkyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogRW5hYmxpbmcgQ29uZmlncyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBncmVlbmxpZ2h0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZvciBkZXBsb3ltZW50LCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlIGFuZCBvcGVyYXRpb25hbC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBzeXN0ZW0tbGV2ZWwgY2hhbmdlcyBoZXJlLCBhbmQgYSBtaXNjb25maWd1cmVkIGRlcGVuZGVuY3kgY291bGQgbGVhZCB0byBjYXNjYWRpbmcgZmFpbHVyZXMg4oCTIHNvbWV0aGluZyBJJiMzOTtkIGxpa2UgdG8gYXZvaWQgYXQgYWxsIGNvc3RzLCBlc3BlY2lhbGx5IGR1cmluZyBhIHByb2R1Y3Rpb24gcm9sbG91dC4gU28sIEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwcmVyZXF1aXNpdGUgc2VydmljZXMsIGxpYnJhcmllcywgYW5kIGV4dGVybmFsIHJlc291cmNlcyB0aGF0IHRoZXNlIGNvbmZpZ3MgcmVseSBvbi4gSSYjMzk7bSBmb2N1c2luZyBub3QganVzdCBvbiB3aGV0aGVyIHRoZXkgKmV4aXN0KiwgYnV0IGFsc28gb24gdGhlaXIgY3VycmVudCBzdGF0ZSDigJMgYXJlIHRoZXkgaGVhbHRoeSwgcGVyZm9ybWluZyBhcyBleHBlY3RlZCwgYW5kIGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkPyBBcmUgdGhlIEFQSSBlbmRwb2ludHMgdGhleSB1c2Ugc3RhYmxlLCB3aXRoIHN1aXRhYmxlIHJhdGUgbGltaXRzLCBhbmQgZG9lcyB0aGUgdW5kZXJseWluZyBpbmZyYXN0cnVjdHVyZSBoYXZlIGVub3VnaCBjYXBhY2l0eSB0byBzdXBwb3J0IGFueSBuZXcgZGVtYW5kcyB0aGVzZSBjb25maWdzIG1pZ2h0IGludHJvZHVjZT8gSSYjMzk7bSBjcm9zcy1yZWZlcmVuY2luZyBhbnkgcmVjZW50IGNoYW5nZXMgdG8gZGVwZW5kZW50IHN5c3RlbXM7IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgaW5jb21wYXRpYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMgdGhhdCBtaWdodCBoYXZlIGZsb3duIHVuZGVyIHRoZSByYWRhci4gRmluYWxseSwgSeKAmWxsIG5lZWQgdG8gY29uZmlybSB0aGF0IGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhlc2UgY29uZmlncyBoYXZlIGJlZW4gZnVsbHkgYWRkcmVzc2VkIGFuZCB0aGF0IGFwcHJvcHJpYXRlIGFjY2VzcyBjb250cm9scyBhcmUgZXN0YWJsaXNoZWQuIE5vIHBvaW50IGluIG1ha2luZyBhIGdyZWF0IGVuaGFuY2VtZW50IGlmIGl0IGV4cG9zZXMgYSB2dWxuZXJhYmlsaXR5LiBBIHRob3JvdWdoIGRlcGVuZGVuY3kgY2hlY2sgaXMgdGhlIG9ubHkgd2F5IHRvIG1pbmltaXplIHRoZSByaXNrcyBhbmQgdmFsaWRhdGUgd2UgY2FuIHByb2NlZWQgc2FmZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDM6XHRjb25maWcgSU5QVVRfSU1TX1BDVVxuIDgwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4gODA1Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDgwNjpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTXG4gODA3Olx0XHRoZWxwXG4gODA4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgc3lzdGVtIHdpdGggSU1TIFJhdmUgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdC5cbiA4MDk6XHRcbiA4MTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gODExOlx0XHQgIGNhbGxlZCBpbXNfcGN1LlxuIDgxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDkwOlx0Y29uZmlnIFRPVUNIU0NSRUVOX0lMSTIxMFhcbiA0OTE6XHRcdHRyaXN0YXRlIFwmIzM0O0lsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXCYjMzQ7XG4gNDkyOlx0XHRkZXBlbmRzIG9uIEkyQ1xuIDQ5MzpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuIDQ5NDpcdFx0aGVscFxuIDQ5NTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxuIDQ5NjpcdFx0ICBjb250cm9sbGVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb2RlbHMgSUxJMjEwMixcbiA0OTc6XHRcdCAgSUxJMjEwMnMsIElMSTIxMDMsIElMSTIxMDNzIGFuZCBJTEkyMTA1LlxuIDQ5ODpcdFx0ICBTdWNoIGtpbmQgb2YgY2hpcHNldHMgY2FuIGJlIGZvdW5kIGluIEFtYXpvbiBLaW5kbGUgRmlyZVxuIDQ5OTpcdFx0ICB0b3VjaHNjcmVlbnMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDIzOlx0Y29uZmlnIFVTQl9HU1BDQV9WSUNBTVxuIDQyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlDYW0gVVNCIENhbWVyYSBEcml2ZXJcJiMzNDtcbiA0MjU6XHRcdGRlcGVuZHMgb24gVklERU9fREVWIFx1MDAyNlx1MDAyNiBVU0JfR1NQQ0FcbiA0MjY6XHRcdGhlbHBcbiA0Mjc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCBzdXBwb3J0IGZvciB0aGUgM2NvbSBob21lY29ubmVjdCBjYW1lcmFcbiA0Mjg6XHRcdCAgKHZpY2FtKS5cbiA0Mjk6XHRcbiA0MzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNDMxOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBnc3BjYV92aWNhbS5cbiA0MzI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0Y29uZmlnIFVTQl9FTUkyNlxuICA1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7RU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSAyfDYgbG93IGxhdGVuY3kgVVNCXG4gIDU0Olx0XHQgIEF1ZGlvIGludGVyZmFjZS5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxuICA1NzpcdFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxuICA1ODpcdFxuICA1OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDM2Olx0Y29uZmlnIFVTQl9FTUk2MlxuICAzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7RU1JIDZ8Mm0gVVNCIEF1ZGlvIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgNnwybSBsb3cgbGF0ZW5jeSBVU0JcbiAgNDA6XHRcdCAgQXVkaW8gYW5kIE1pZGkgaW50ZXJmYWNlLlxuICA0MTpcdFxuICA0MjpcdFx0ICBBZnRlciBmaXJtd2FyZSBsb2FkIHRoZSBkZXZpY2UgaXMgaGFuZGxlZCB3aXRoIHN0YW5kYXJkIGxpbnV4XG4gIDQzOlx0XHQgIFVTQiBBdWRpbyBkcml2ZXIuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIFRoaXMgY29kZSBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaCBjYW4gYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcbiAyMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbiAyMTc6XHRcdGhlbHBcbiAyMTg6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgZGV2aWNlcyBmcm9tXG4gMjE5Olx0XHQgIEluc2lkZSBPdXQgTmV0d29ya3MgKERpZ2kpOlxuIDIyMDpcdFx0ICBFZGdlcG9ydC80XG4gMjIxOlx0XHQgIFJhcGlkcG9ydC80XG4gMjIyOlx0XHQgIEVkZ2Vwb3J0LzR0XG4gMjIzOlx0XHQgIEVkZ2Vwb3J0LzJcbiAyMjQ6XHRcdCAgRWRnZXBvcnQvNGlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MzpcdGNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXG4gMzc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtab2RpYWMgUkFWRSBXYXRjaGRvZyBUaW1lclwmIzM0O1xuIDM3NTpcdFx0ZGVwZW5kcyBvbiBJMkNcbiAzNzY6XHRcdHNlbGVjdCBXQVRDSERPR19DT1JFXG4gMzc3Olx0XHRoZWxwXG4gMzc4Olx0XHQgIFdhdGNoZG9nIGRyaXZlciBmb3IgdGhlIFpvZGlhYyBBZXJvc3BhY2UgUkFWRSBTd2l0Y2ggV2F0Y2hkb2dcbiAzNzk6XHRcdCAgUHJvY2Vzc29yLlxuIDM4MDpcdFxuIDM4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAzODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHppaXJhdmVfd2R0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjc3MzpcdGNvbmZpZyBTTkRfU09DX1pMMzgwNjBcbjI3NzQ6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc2VtaSBaTDM4MDYwIENvbm5lY3RlZCBIb21lIEF1ZGlvIFByb2Nlc3NvclwmIzM0O1xuMjc3NTpcdFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXG4yNzc2Olx0XHRkZXBlbmRzIG9uIEdQSU9MSUJcbjI3Nzc6XHRcdHNlbGVjdCBSRUdNQVBcbjI3Nzg6XHRcdGhlbHBcbjI3Nzk6XHRcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXG4yNzgwOlx0XHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcbjI3ODE6XHRcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cbjI3ODI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVmVyaWZpY2F0aW9uIFBsYW4qKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXkmIzM5O3JlIGlubGluZSBmdW5jdGlvbnMgcmVzaWRpbmcgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCwgbWVhbmluZyB0aGV5JiMzOTtyZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGVtLiBUaGUgbWFpbiBjaGFsbGVuZ2Ugbm93IGlzIHRvIHZlcmlmeSB0aGlzIGZpeCBieSBlbnN1cmluZyB0aGUgcmVsZXZhbnQgY29kZSBnZXRzIGNvbXBpbGVkIGFuZCBpcywgaWRlYWxseSwgZnV6emVkLgoKSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgZW5hYmxpbmcgYSBicm9hZGVyIHNldCBvZiBkcml2ZXJzLiBJIGhhZCBsaXN0ZWQgYElOUFVUX0lNU19QQ1VgLCBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAsIGBVU0JfR1NQQ0FfVklDQU1gLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEhvd2V2ZXIsIGEgcXVpY2sgcmV2aWV3IG9mIGRlcGVuZGVuY2llcyByZXZlYWxzIGEgZmV3IHBvdGVudGlhbCBjb21wbGljYXRpb25zLiBgVVNCX0dTUENBX1ZJQ0FNYCBuZWVkcyBgVklERU9fREVWYCBhbmQgYFVTQl9HU1BDQWAuIGBJTlBVVF9JTVNfUENVYCByZWxpZXMgb24gYFVTQmAgYW5kIGBMRURTX0NMQVNTYC4gQm90aCBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAgYW5kIGBaSUlSQVZFX1dBVENIRE9HYCBkZXBlbmQgb24gYEkyQ2AuIEFuZCBmaW5hbGx5LCBgU05EX1NPQ19aTDM4MDYwYCBuZWVkcyBgU1BJX01BU1RFUmAgYW5kIGBHUElPTElCYC4KCkdpdmVuIHRoZXNlIGRlcGVuZGVuY2llcywgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHBhdGggaXMgdG8gZm9jdXMgb24gVVNCIGRyaXZlcnMgZm9yIG5vdy4gVGhleSBjYW4gYmUgcmVsYXRpdmVseSBlYXNpbHkgZnV6emVkIHVzaW5nIGBkdW1teV9oY2RgLiBUaGVyZWZvcmUsIEkmIzM5O2xsIHByaW9yaXRpemUgZW5hYmxpbmcgYFVTQl9FTUkyNmAsIGBVU0JfRU1JNjJgLCBgVVNCX1NFUklBTF9FREdFUE9SVGAsIGFuZCBgSU5QVVRfSU1TX1BDVWAuCgpBZGRpdGlvbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoZSB1c2FnZSBvZiBgVVNCX0VaVVNCYCBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYnkgYFVTQl9TRVJJQUxfS0VZU1BBTmAgYW5kIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gSXQmIzM5O3Mgd29ydGggYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgcHJvcGVybHkgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9FWlVTQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MjY1PWNvbmZpZyBVU0JfWVVSRVhcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMjc2LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjI3Nzpjb25maWcgVVNCX0VaVVNCX0ZYMlxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0Z1bmN0aW9ucyBmb3IgbG9hZGluZyBmaXJtd2FyZSBvbiBFWlVTQiBjaGlwc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTI5MT1jb25maWcgVVNCX1NFUklBTF9JVVVcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDAtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYwMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkV4YW1pbmluZyB0aGUgRVotVVNCIERyaXZlciBDb21waWxhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBVU0IgZHJpdmVyLCBgZXp1c2IuY2AsIGlzIGdldHRpbmcgY29tcGlsZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBUaGUgZmlsZSBwYXRoIGlzIGBkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmNgLCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBkcml2ZXIsIG5vdCBkZWVwbHkgbmVzdGVkIHdpdGhpbiBzb21lIGVsYWJvcmF0ZSBhcmNoaXRlY3R1cmUuIEkga25vdyB0aGF0IGxvb2tpbmcgYXQgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiBpcyBoZWxwZnVsLCBidXQgZmlyc3QgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGUgYnVpbGQgc3lzdGVtIGhhbmRsZXMgaXQuIFRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB3aXRoIHRoaXMgcXVlc3Rpb24sIGluIHRoaXMgY29udGV4dCwgaXMgcHJvYmFibHkgdGhlIHNvdXJjZSB0cmVlLCBJJiMzOTtsbCBnbyBoYXZlIGEgbG9vayBpbiB0aGF0IGZpbGUuIEkgY2FuIGdldCBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGJ1aWxkIGlzIGJlaW5nIG9yY2hlc3RyYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXp1c2IubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfRU1JNjIpXHRcdFx0JiM0Mzs9IGVtaTYyLm9cbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9FWlVTQl9GWDIpXHRcdCYjNDM7PSBlenVzYi5vXG5kcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19BUFBMRV9NRklfRkFTVENIQVJHRSlcdCYjNDM7PSBhcHBsZS1tZmktZmFzdGNoYXJnZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgVVNCLUJhc2VkIEhhcmR3YXJlIGZvciBJbWFnaW5nIGFuZCBTZXJpYWwgQ29tbXVuaWNhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgQ09ORklHX1VTQl9FWlVTQl9GWDJgIGRyaXZlci4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIG1hcCBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGZvciBhIHN5c3RlbSB1dGlsaXppbmcgdGhpcyBjaGlwLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgbGlzdCB0aG9zZSBjb25maWdzIHdlIGtub3cgd2UgbmVlZCB0byBlbmFibGUsIGluY2x1ZGluZyB0aGUgYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCBkcml2ZXJzLCBhbmQgb2YgY291cnNlIGBVU0JfRVpVU0JfRlgyYC4mIzM0OwoKTmV4dCwgbXkgbWVudGFsIGNoZWNrbGlzdCBtb3ZlcyB0byBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFueSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyB0aGF0IHRoZSBgVVNCX0VaVVNCX0ZYMmAgZHJpdmVyIG1pZ2h0IGhhdmUuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjc3Olx0Y29uZmlnIFVTQl9FWlVTQl9GWDJcbiAyNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0Z1bmN0aW9ucyBmb3IgbG9hZGluZyBmaXJtd2FyZSBvbiBFWlVTQiBjaGlwc1wmIzM0O1xuIDI3OTpcdFx0aGVscFxuIDI4MDpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBuZWVkIEVaVVNCIGRldmljZSBzdXBwb3J0LlxuIDI4MTpcdFx0ICAoQ3lwcmVzcyBGWC9GWDIvRlgyTFAgbWljcm9jb250cm9sbGVycylcbiAyODI6XHRcbiAyODM6XHRjb25maWcgVVNCX0hVQl9VU0IyNTFYQlxuIDI4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCMjUxWEIgSHViIENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbiBEcml2ZXJcJiMzNDtcbiAyODU6XHRcdGRlcGVuZHMgb24gSTJDXG4gMjg2Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzgwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2stSW4qKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIGBVU0JfRVpVU0JfRlgyYCDigJMgbm9wZSwgY2xlYW4uIE5vIGV4dGVybmFsIGxpYnJhcnkgaG9va3Mgb3IgdHJpY2t5IGJ1aWxkIGZsYWdzIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBBbHdheXMgYSBnb29kIHNpZ24uCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgKm1lYXQqIG9mIGl0OiBgVVNCX1NFUklBTF9FREdFUE9SVGAuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIHRlbmQgdG8gZ2V0IGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBiaXQgdGFuZ2xlZC4gR290dGEgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gRGlnZ2luZyBpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTU6XHRjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxuIDIxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDIxNzpcdFx0aGVscFxuIDIxODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBkZXZpY2VzIGZyb21cbiAyMTk6XHRcdCAgSW5zaWRlIE91dCBOZXR3b3JrcyAoRGlnaSk6XG4gMjIwOlx0XHQgIEVkZ2Vwb3J0LzRcbiAyMjE6XHRcdCAgUmFwaWRwb3J0LzRcbiAyMjI6XHRcdCAgRWRnZXBvcnQvNHRcbiAyMjM6XHRcdCAgRWRnZXBvcnQvMlxuIDIyNDpcdFx0ICBFZGdlcG9ydC80aVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDcyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRldmljZSBEcml2ZXIgRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gRmlyc3QsIGdvb2QsIG5vIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgZm9yIGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhhdCYjMzk7cyBhIGNsZWFuIHNsYXRlLCBhbHdheXMgYSBuaWNlIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBzaGlmdCBteSBmb2N1cyB0byB0aG9zZSByZWxhdGVkIEVNSSBkZXZpY2VzIC0gYFVTQl9FTUkyNmAgYW5kIGBVU0JfRU1JNjJgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVVNCX1NFUklBTF9FREdFUE9SVGAgaXNuJiMzOTt0IGluYWR2ZXJ0ZW50bHkgcmVsaWFudCBvbiBzb21lIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBzdHJ1Y3R1cmVzIHByb3ZpZGVkIGJ5IGVpdGhlciBvZiB0aG9zZS4gTmVlZCB0byBxdWlja2x5IHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc2hhcmVkIGNvZGUgb3IgY29tbW9uIGVsZW1lbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIHNob3VsZCBhbHNvIHRoaW5rIGFib3V0IHdoZXRoZXIgdGhleSYjMzk7cmUgbGlrZWx5IHRvIGhhdmUgYW55IGtpbmQgb2Ygc2hhcmVkIGludGVycnVwdCBzdHJ1Y3R1cmUgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi4gR29pbmcgdG8gZGlnIGludG8gdGhvc2UgbW9kdWxlcyBuZXh0LCBhbmQgY3Jvc3MtcmVmZXJlbmNlLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzY6XHRjb25maWcgVVNCX0VNSTYyXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtFTUkgNnwybSBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSA2fDJtIGxvdyBsYXRlbmN5IFVTQlxuICA0MDpcdFx0ICBBdWRpbyBhbmQgTWlkaSBpbnRlcmZhY2UuXG4gIDQxOlx0XG4gIDQyOlx0XHQgIEFmdGVyIGZpcm13YXJlIGxvYWQgdGhlIGRldmljZSBpcyBoYW5kbGVkIHdpdGggc3RhbmRhcmQgbGludXhcbiAgNDM6XHRcdCAgVVNCIEF1ZGlvIGRyaXZlci5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgVGhpcyBjb2RlIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxuICA0NjpcdFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCkuXG4gIDQ3Olx0XHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYXVkaW8uIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgYXMgYVxuICA0ODpcdFx0ICBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiAgNDk6XHRcbiAgNTA6XHRjb25maWcgVVNCX0VNSTI2XG4gIDUxOlx0XHR0cmlzdGF0ZSBcJiMzNDtFTUkgMnw2IFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGRyaXZlciBsb2FkcyBmaXJtd2FyZSB0byBFbWFnaWMgRU1JIDJ8NiBsb3cgbGF0ZW5jeSBVU0JcbiAgNTQ6XHRcdCAgQXVkaW8gaW50ZXJmYWNlLlxuICA1NTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6CgoqKkRlcGVuZGVuY3kgQW5hbHlzaXMgaW4gUHJvZ3Jlc3MqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBxdWljayBhc3Nlc3NtZW50LiBJIHNlZSBubyBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfRU1JMjZgIG9yIGBVU0JfRU1JNjJgLCB3aGljaCBpcyBnb29kLiBUaGF0IGxpa2VseSBzaW1wbGlmaWVzIHRoaW5ncywgYXQgbGVhc3Qgb24gdGhlIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiB0byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgcmV2aWV3IHRoZSBhcmNoaXRlY3R1cmUgZG9jdW1lbnRzIHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlIGFyZSBubyBpbXBsaWNpdCBvciBpbmRpcmVjdCByZWxhdGlvbnNoaXBzIEkmIzM5O20gbWlzc2luZy4gR290IHRvIGJlIHRob3JvdWdoIGhlcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgcGl2b3QgYW5kIGV4YW1pbmUgdGhlIGBJTlBVVF9JTVNfUENVYCBjb21wb25lbnQuIEl0IGNvdWxkIGhhdmUgY29ubmVjdGlvbnMgSSYjMzk7bSBub3Qgc2VlaW5nIHlldC4gVW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgc21vb3RoIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDM6XHRjb25maWcgSU5QVVRfSU1TX1BDVVxuIDgwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXCYjMzQ7XG4gODA1Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDgwNjpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTXG4gODA3Olx0XHRoZWxwXG4gODA4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgc3lzdGVtIHdpdGggSU1TIFJhdmUgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdC5cbiA4MDk6XHRcbiA4MTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gODExOlx0XHQgIGNhbGxlZCBpbXNfcGN1LlxuIDgxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY3NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB0d28ga2V5IGNvbXBvbmVudHM6IHRoZSBgVVNCYCBzZXR0aW5nIGFuZCB0aGUgYExFRFNfQ0xBU1NgLiBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIGludHVpdGlvbiBvbiB0aGlzLCBhbmQgYExFRFNfQ0xBU1NgIGlzICp1c3VhbGx5KiBlbmFibGVkIGJ5IGRlZmF1bHQuIFN0aWxsLCBpdCYjMzk7cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdG8gY29uZmlybSB0aGF0JiMzOTtzIHRoZSBjYXNlIGluIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gV2UmIzM5O3JlIGdvaW5nIHRvIHRyZWF0IGl0IGFzIGFuIGluY2x1c2lvbiBlaXRoZXIgd2F5LiBOb3csIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYFVTQl9HU1BDQV9WSUNBTWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGxpZXMuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQgdGhhdCYjMzk7cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjM6XHRjb25maWcgVVNCX0dTUENBX1ZJQ0FNXG4gNDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclwmIzM0O1xuIDQyNTpcdFx0ZGVwZW5kcyBvbiBWSURFT19ERVYgXHUwMDI2XHUwMDI2IFVTQl9HU1BDQVxuIDQyNjpcdFx0aGVscFxuIDQyNzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxuIDQyODpcdFx0ICAodmljYW0pLlxuIDQyOTpcdFxuIDQzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA0MzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGdzcGNhX3ZpY2FtLlxuIDQzMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYmVoYXZpb3IgSSYjMzk7bSBzZWVpbmcgaXMgc3Ryb25nbHkgY29udGluZ2VudCBvbiBhIGZldyBzcGVjaWZpYyBmYWN0b3JzLiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBgVklERU9fREVWYCBhbmQgYFVTQl9HU1BDQWAuIFRoZXNlIGFyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgd2hlbiBjb25zaWRlcmluZyB2aWRlbyBpbnB1dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3RhbmRhcmQgdmlkZW8gZGV2aWNlIGFuZCBpZiB0aGUgVVNCIGdzcGNhIGRyaXZlcnMgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgbGV2ZWwgY2hlY2suCgpUaGVuLCBzaW5jZSB0aGlzIGxpa2VseSBpbnZvbHZlcyBzb21lIGtpbmQgb2YgZGlzcGxheSBpbnRlcmFjdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBpbW1lZGlhdGVseSBpbnZlc3RpZ2F0ZSBgVE9VQ0hTQ1JFRU5fSUxJMjEwWGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIGVuYWJsZWQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaGFzIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0OTA6XHRjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxuIDQ5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SWxpdGVrIElMSTIxMFggYmFzZWQgdG91Y2hzY3JlZW5cJiMzNDtcbiA0OTI6XHRcdGRlcGVuZHMgb24gSTJDXG4gNDkzOlx0XHRzZWxlY3QgQ1JDX0NDSVRUXG4gNDk0Olx0XHRoZWxwXG4gNDk1Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXG4gNDk2Olx0XHQgIGNvbnRyb2xsZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vZGVscyBJTEkyMTAyLFxuIDQ5NzpcdFx0ICBJTEkyMTAycywgSUxJMjEwMywgSUxJMjEwM3MgYW5kIElMSTIxMDUuXG4gNDk4Olx0XHQgIFN1Y2gga2luZCBvZiBjaGlwc2V0cyBjYW4gYmUgZm91bmQgaW4gQW1hem9uIEtpbmRsZSBGaXJlXG4gNDk5Olx0XHQgIHRvdWNoc2NyZWVucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZnJhbWVkIGFzIHlvdXIgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGhpbmdlcyBvbiB0aGUgYEkyQ2AgYnVzLCB0aGF0JiMzOTtzIHRoZSBjb3JlLiBCZWZvcmUgSSBkaWcgYW55IGRlZXBlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgSTJDIGlzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBOb3csIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYFpJSVJBVkVfV0FUQ0hET0dgIGlzIGludGVyYWN0aW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGF0IGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM3MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzczOlx0Y29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcbiAzNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1pvZGlhYyBSQVZFIFdhdGNoZG9nIFRpbWVyXCYjMzQ7XG4gMzc1Olx0XHRkZXBlbmRzIG9uIEkyQ1xuIDM3NjpcdFx0c2VsZWN0IFdBVENIRE9HX0NPUkVcbiAzNzc6XHRcdGhlbHBcbiAzNzg6XHRcdCAgV2F0Y2hkb2cgZHJpdmVyIGZvciB0aGUgWm9kaWFjIEFlcm9zcGFjZSBSQVZFIFN3aXRjaCBXYXRjaGRvZ1xuIDM3OTpcdFx0ICBQcm9jZXNzb3IuXG4gMzgwOlx0XG4gMzgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDM4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgemlpcmF2ZV93ZHQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODMwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSTJDIERlcGVuZGVudCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIG9uIGBJMkNgLiBUaGF0JiMzOTtzIHRoZSBnYXRld2F5IGhlcmUuIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQgcHJvdG9jb2wsIHNvIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGZpcnN0LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIGhvdyBgSTJDYCBpcyBiZWluZyBsZXZlcmFnZWQuCgpUaGF0IG5hdHVyYWxseSBsZWFkcyBtZSB0byB0aGluayBhYm91dCBgU05EX1NPQ19aTDM4MDYwYC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlciBob3cgdGhhdCByZWxhdGVzIHRvIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoYXQgc3BlY2lmaWMgbW9kdWxlIG5vdy4gTXkgdGhvdWdodHMgbm93IGFyZSBmb2N1c2VkIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyY29ubmVjdGlvbiB3aXRoIHRoZSBhdWRpbyBjb2RlYyBhbmQgd2hhdCBpbmZvcm1hdGlvbiBJIGNhbiBnYXRoZXIgZnJvbSBgU05EX1NPQ19aTDM4MDYwYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgYXJlYSB0byBhc3Nlc3MgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9zb2MvY29kZWNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzczLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3NzM6XHRjb25maWcgU05EX1NPQ19aTDM4MDYwXG4yNzc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3JcJiMzNDtcbjI3NzU6XHRcdGRlcGVuZHMgb24gU1BJX01BU1RFUlxuMjc3NjpcdFx0ZGVwZW5kcyBvbiBHUElPTElCXG4yNzc3Olx0XHRzZWxlY3QgUkVHTUFQXG4yNzc4Olx0XHRoZWxwXG4yNzc5Olx0XHQgIFN1cHBvcnQgZm9yIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yIGZyb20gTWljcm9zZW1pLFxuMjc4MDpcdFx0ICB3aGljaCBjb25zaXN0cyBvZiBhIERpZ2l0YWwgU2lnbmFsIFByb2Nlc3NvciAoRFNQKSwgc2V2ZXJhbCBEaWdpdGFsXG4yNzgxOlx0XHQgIEF1ZGlvIEludGVyZmFjZXMgKERBSXMpLCBhbmFsb2cgb3V0cHV0cywgYW5kIGEgYmxvY2sgb2YgMTQgR1BJT3MuXG4yNzgyOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjMzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgY29uZmlndXJhdGlvbiBoZXJlIGhpbmdlcyBvbiB0aGUgYFNQSV9NQVNURVJgIGFuZCBgR1BJT0xJQmAgZGVwZW5kZW5jaWVzLiBUaG9zZSBhcmUgZm91bmRhdGlvbmFsLCBzbyB0aGV5JiMzOTtyZSBpbiBwbGFjZS4gTm93LCBJJiMzOTttIGxvb2tpbmcgYXQgVVNCIGRyaXZlcnMgdGhhdCByZWx5IG9uIGloZXggZmlybXdhcmUuIEkmIzM5O2xsIGVuYWJsZSBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9FWlVTQl9GWDJgLCBgSU5QVVRfSU1TX1BDVWAsIGFuZCBgTEVEU19DTEFTU2AuIFRoZXNlIGFyZSBjb21tb24gdGFyZ2V0cyBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgoKV2FpdCBhIHNlY29uZCwgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgYFVTQl9FWlVTQl9GWDJgLS10aGF0JiMzOTtzIG5vdCBhIGRyaXZlciwgaXQmIzM5O3MgYSBsaWJyYXJ5LiBXaGljaCBtZWFucyBpdCBpcyB1c2VkIGJ5IG90aGVyIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBlbnRpcmUgc3RhY2sgYW5kIHRoYXQgSSBnZXQgaXQgcmlnaHQuIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAgc2luY2UgdGhleSB1c2UgdGhlIGBVU0JfRVpVU0JfRlgyYCBsaWJyYXJ5LiBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMTpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5fUERBXG4gMzAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDMwMzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMDQ6XHRcdGhlbHBcbiAzMDU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBLZXlzcGFuIFBEQSwgWGlyY29tIG9yIEVudHJlZ2Egc2luZ2xlXG4gMzA2Olx0XHQgIHBvcnQgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLiBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2ZcbiAzMDc6XHRcdCAgZmlybXdhcmUgZGV2ZWxvcGVkIGZyb20gc2NyYXRjaCBieSBCcmlhbiBXYXJuZXIuXG4gMzA4Olx0XG4gMzA5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDMxMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTlxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEtleXNwYW4gVVNBLXh4eCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4gMzE0Olx0XHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBLZXlzcGFuIFVTQiB0byBzZXJpYWwgY29udmVydGVyXG4gMzE3Olx0XHQgIGRldmljZXMuICBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2YgS2V5c3BhbiYjMzk7cyBvZmZpY2lhbCBmaXJtd2FyZVxuIDMxODpcdFx0ICBhbmQgd2FzIGRldmVsb3BlZCB3aXRoIHRoZWlyIHN1cHBvcnQuICBZb3UgbXVzdCBhbHNvIGluY2x1ZGVcbiAzMTk6XHRcdCAgZmlybXdhcmUgdG8gc3VwcG9ydCB5b3VyIHBhcnRpY3VsYXIgZGV2aWNlKHMpLlxuIDMyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1NgoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgUmVmaW5lbWVudCoqCgpPa2F5LCBzbyB0aGUgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOYCBkcml2ZXJzIGFyZSByZWxhdGVkIHRvIHRoZSBgVVNCX0VaVVNCX0ZYMmAgZGV2aWNlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4KClRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaG9zZSBhcmUgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAuIEdpdmVuIHRoYXQgdGhleSYjMzk7cmUgaW5saW5lLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYWN0dWFsbHkgKmNhbGwqIHRob3NlLiAgSSYjMzk7dmUgZ290IGEgbGlzdCBoZXJlOiBgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlYCwgYGltc19wY3VfY291bnRfZndfcmVjb3Jkc2AsIGBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlYCwgYGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyYCwgYHNkX2luaXRgIChpbiB2aWNhbS5jKSwgYGVtaTI2X2xvYWRfZmlybXdhcmVgLCBgZW1pNjJfbG9hZF9maXJtd2FyZWAsIGBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYHVwZGF0ZV9lZGdlcG9ydF9FMlBST01gLCBgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZWAsIGB6aWlyYXZlX2Zpcm1fdmVyaWZ5YCwgYHppaXJhdmVfZmlybV91cGxvYWRgLCBhbmQgYHpsMzhfbG9hZF9maXJtd2FyZWAuCgpIb2xkIG9uLCBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBNeSBpZGVhbCBmdXp6aW5nIHRhcmdldHMgYXJlIGdvaW5nIHRvIGJlIHRob3NlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCYjMzk7cyBob3cgSSYjMzk7bGwgbWF4aW1pemUgdGhlIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIHZ1bG5lcmFiaWxpdGllcyBmcm9tIGV4dGVybmFsIGlucHV0LiBTbywgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRocm91Z2ggdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB0aG9zZSBlbnRyeSBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTk0MD1zdGF0aWMgaW50IGltc19wY3VfaGFuZGxlX2Zpcm13YXJlX3VwZGF0ZShzdHJ1Y3QgaW1zX3BjdSAqcGN1LFxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTY2LVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzo5Njc6c3RhdGljIHZvaWQgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqX2Z3LFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05NjgtXHRcdFx0XHRcdCAgIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMDUzPXN0YXRpYyBpbnQgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZShzdHJ1Y3QgaW1zX3BjdSAqcGN1KVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtMjA4MS1cdFx0XHRcdFx0cGN1LVx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgcGN1LFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMDgyOlx0XHRcdFx0XHRpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmUpO1xuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgzLVx0aWYgKGVycm9yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaTI2X2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTMyPXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzozMzpzdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTM0LXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTU3PXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtNzAtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6NzE6c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTcyLXtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MjI2PXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMjMxLVxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjIzMjpcdGVtaTI2X2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0yMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaTYyX2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTQxPXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzo0MjpzdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTQzLXN0YXRpYyBpbnQgZW1pNjJfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4tLVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTY2PXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNzgtXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6Nzk6c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTgwLXtcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9MjM4PXN0YXRpYyBpbnQgZW1pNjJfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMjQ0LVxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjI0NTpcdGVtaTYyX2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0yNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4MV9zZXRfcmVzZXQpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTU3LVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjU4OnN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTU5LVx0XHRcdFx0XHRzdHJ1Y3QgZXp1c2JfZnhfdHlwZSBmeCxcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9MTIwPWludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMjIte1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjEyMzpcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngxLCBmaXJtd2FyZV9wYXRoKTtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMjQtfVxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDM9aW50IGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0NS17XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ2Olx0cmV0dXJuIGV6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQoZGV2LCBlenVzYl9meDIsIGZpcm13YXJlX3BhdGgpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VwZGF0ZV9lZGdlcG9ydF9FMlBST00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9Mjk0PXN0YXRpYyBpbnQgcm9tX3dyaXRlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsIF9fdTE2IGV4dEFkZHIsIF9fdTE2IGFkZHIsXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzAzLSAqXHRcdFx0XHRcdFx0XHRcdFx0KlxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzA0OiAqIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oKVx0Q29tcGFyZSBjdXJyZW50IHZlcnNpb25zIG9mXHRcdCpcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMwNS0gKlx0XHRcdFx0Qm9vdCBST00gYW5kIE1hbnVmYWN0dXJlIFx0XHQqXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzA5LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMTA6c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMxMS17XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjcwND1zdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzQtXHRcdC8qIENoZWNrIGN1cnJlbnQgRWRnZXBvcnQgRUVQUk9NIGFuZCB1cGRhdGUgaWYgbmVjZXNzYXJ5ICovXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNzc1Olx0XHR1cGRhdGVfZWRnZXBvcnRfRTJQUk9NKGVkZ2Vfc2VyaWFsKTtcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xvYWRfYXBwbGljYXRpb25fZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjU4Nz1zdGF0aWMgdm9pZCBnZXRfYm9vdF9kZXNjKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjMtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2MjQ6ICogbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjYyNS0gKlx0VGhpcyBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgdG8gdGhlIGRldmljZVxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjYyNi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2Mjc6c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2Mjgte1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI3MDQ9c3RhdGljIGludCBlZGdlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNzY5LVx0XHQvKiBub3cgbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgaW50byB0aGlzIGRldmljZSAqL1xuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6Mjc3MDpcdFx0bG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShlZGdlX3NlcmlhbCk7XG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNzcxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc4MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIERldmljZSBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMuIFdlJiMzOTt2ZSBnb3QgYSB2YXJpZXR5IG9mIHRoZW0gaGVyZSwgc2VlbWluZ2x5IHNwYW5uaW5nIGRpZmZlcmVudCBVU0IgZGV2aWNlIGNsYXNzZXMuIEZpcnN0LCBJIHNlZSBgZW1pMjZfcHJvYmVgIGFuZCBgZW1pNjJfcHJvYmVgIGluIHRoZSBgZW1pMjYuY2AgYW5kIGBlbWk2Mi5jYCBkcml2ZXJzLCByZXNwZWN0aXZlbHksIHdoaWNoIGxpa2VseSBoYW5kbGUgc29tZSBjdXN0b20gRU1JIGRldmljZXMuIFRoZW4sIHdlIGhhdmUgdGhlIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYW5kIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgZnVuY3Rpb25zIGluIGBlenVzYi5jYC4gR2l2ZW4gdGhlaXIgbmFtZXMsIHRob3NlIGFyZSBmaXJtd2FyZSBkb3dubG9hZCByb3V0aW5lcyBmb3IgQ3lwcmVzcyBFWi1VU0IgRlgxIGFuZCBGWDIgZGV2aWNlcywgcHJvYmFibHkgY3J1Y2lhbCBmb3IgYnJpbmdpbmcgdXAgZGV2aWNlcyB1c2luZyB0aG9zZSBjaGlwcy4KCk5leHQgdXAsIGBlZGdlX3N0YXJ0dXBgIGluIHRoZSBgaW9fZWRnZXBvcnQuY2AgZmlsZSBoYXMgY2F1Z2h0IG15IGV5ZSAtIHRoaXMgc2VlbXMgcmVsYXRlZCB0byBpbml0aWFsaXphdGlvbiBvciBhIGRldmljZS1zcGVjaWZpYyBzdGFydHVwIHJvdXRpbmUgd2l0aGluIHRoZSBFZGdlcG9ydCBzZXJpYWwgZHJpdmVyLiBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZWAgYW5kIGl0cyBwYXJlbnQgYGltc19wY3VfcHJvYmVgIGluIGBpbXMtcGN1LmNgLiBTaW5jZSBgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZWAgaXMgY2FsbGVkIGJ5IGBpbXNfcGN1X3Byb2JlYCwgSSBrbm93IHRoYXQgYGltc19wY3VfcHJvYmVgIGhhcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gaG93IGBpbXNfcGN1X3Byb2JlYCBmdW5jdGlvbnMsIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBib290bG9hZGVyIG1vZGUgaW5pdGlhbGl6YXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM9MjEwMD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgaW1zX3BjdV9kcml2ZXI7XG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTIxMDEtXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjIxMDI6c3RhdGljIGludCBpbXNfcGN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAzLVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMjQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBpbXNfcGN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTIyNDctXHQuZGV2X2dyb3Vwc1x0XHQ9IGltc19wY3Vfc3lzZnNfZ3JvdXBzLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMjQ4Olx0LnByb2JlXHRcdFx0PSBpbXNfcGN1X3Byb2JlLFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMjQ5LVx0LmRpc2Nvbm5lY3RcdFx0PSBpbXNfcGN1X2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCBydW5kb3duOgoKKipJZGVudGlmeWluZyBLZXkgRW50cnkgUG9pbnRzICZhbXA7IERlcGVuZGVuY3kgQW5hbHlzaXMqKgoKUmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB3ZSBuZWVkIHRvIGNvbmNlbnRyYXRlIG9uLiBNeSBpbml0aWFsIGxpc3QgaW5jbHVkZXM6IGBlbWkyNl9wcm9iZWAsIGBlbWk2Ml9wcm9iZWAsIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAsIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAsIGBlZGdlX3N0YXJ0dXBgLCBhbmQgYGltc19wY3VfcHJvYmVgLiBTZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBjb21wcmVoZW5zaXZlIHJldmlldy4KCk5vdywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEl0JiMzOTtzIGEgaHVuY2ggYmFzZWQgb24gZXhwZXJpZW5jZS4gSSBuZWVkIHRvIHNlZSBpZiBhbnkgb3RoZXIgZHJpdmVycyBpbiB0aGUgc3lzdGVtIGFyZSBwb3RlbnRpYWxseSBsZXZlcmFnaW5nIGVpdGhlciBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIG9yIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggaXMgdml0YWwgZm9yIGF2b2lkaW5nIHVuZXhwZWN0ZWQgc2lkZS1lZmZlY3RzIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnkgaW50ZXJjb25uZWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU4PXN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMTktXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTIwOmludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyMS1cdFx0XHRcdCAgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aClcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxMjU6RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQpO1xuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyNi1cbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTE2MDU9c3RhdGljIGludCBrZXlzcGFuX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMTY3Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmM6MTY3NzpcdGlmIChlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzZXJpYWwtXHUwMDNlZGV2LCBmd19uYW1lKSBcdTAwM2MgMCkge1xuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjc4LVx0XHRkZXZfZXJyKFx1MDAyNnNlcmlhbC1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM9NjM2PXN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjU3LVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjU4Olx0aWYgKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cdTAwM2VkZXYsIGZ3X25hbWUpIFx1MDAzYyAwKSB7XG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy02NTktXHRcdGRldl9lcnIoXHUwMDI2c2VyaWFsLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFxcXCYjMzQ7JXNcXFwmIzM0O1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTgzPXN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4Ny1cbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxODg6XHRyZXNwb25zZSA9IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cdTAwM2VkZXYsIFwmIzM0O3doaXRlaGVhdF9sb2FkZXIuZndcJiMzNDspO1xuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4OS1cdGlmIChyZXNwb25zZSBcdTAwM2U9IDApIHtcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxOTA6XHRcdHJlc3BvbnNlID0gZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVx1MDAzZWRldiwgXCYjMzQ7d2hpdGVoZWF0LmZ3XCYjMzQ7KTtcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xOTEtXHRcdGlmIChyZXNwb25zZSBcdTAwM2U9IDApXG4tLVxuaW5jbHVkZS9saW51eC91c2IvZXp1c2IuaD01PWV4dGVybiBpbnQgZXp1c2JfZngxX3NldF9yZXNldChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdCk7XG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oOjY6ZXh0ZXJuIGludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxuaW5jbHVkZS9saW51eC91c2IvZXp1c2IuaC03LVx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDE9RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngyX3NldF9yZXNldCk7XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQyLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjE0MzppbnQgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDQtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlX3BhdGgpXG4tLVxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTE0Ny19XG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ4OkVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKTtcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDktI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTMwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGaXJtd2FyZSBEb3dubG9hZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQgdmlhIFVTQiwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlc2UgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGluIGBrZXlzcGFuLmNgLCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCBpbiBga2V5c3Bhbl9wZGEuY2AsIGFuZCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpbiBgd2hpdGVoZWF0LmNgLiBNYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBjb21tb24gZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20gZm9yIHRob3NlIHR5cGVzIG9mIGRldmljZXMuIEkmIzM5O2xsIGZvY3VzIG9uIGB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRgIGZvciBub3cuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IG9uZSBhbmQgc2VlIGhvdyBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQsIGFuZCBob3cgaXQgbGV2ZXJhZ2VzIHRoaXMgY29tbW9uIGRvd25sb2FkIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jPTYyPU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZV9jb21iaW5lZCk7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY1LS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBDb25uZWN0IFRlY2ggV2hpdGVIRUFUIHByZXJlbnVtZXJhdGlvbiBkZXZpY2UgKi9cbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzo2NjpzdGF0aWMgaW50ICB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy02Ny1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9ODg9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciB3aGl0ZWhlYXRfZmFrZV9kZXZpY2UgPSB7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTk0LVx0Lm51bV9wb3J0cyA9XHRcdDEsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6OTU6XHQucHJvYmUgPVx0XHR3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtOTYtXHQuYXR0YWNoID1cdFx0d2hpdGVoZWF0X2Zpcm13YXJlX2F0dGFjaCxcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTU4PXN0YXRpYyBpbnQgZmlybV9yZXBvcnRfdHhfZG9uZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KTtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtMTgyLSovXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTgzOnN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtMTg0LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTg5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUmVmbGVjdGluZyBvbiB0aGUgd2hpdGVoZWF0IEZpcm13YXJlIERvd25sb2FkIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gcHJvY2Vzc2luZyB0aGlzLiBJdCBsb29rcyBsaWtlIGB3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRgIGlzIGFjdGluZyBhcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgd2hpdGVoZWF0X2Zha2VfZGV2aWNlYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBvdXIgb3ZlcmFsbCBzdHJhdGVneS4gTm93IHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcm9sZXMgYW5kIGNvbm5lY3Rpb25zLCB0aGUgbmV4dCBpbW1lZGlhdGUgYWN0aW9uIGl0ZW0gaXMgdG8gYWRkIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAgdG8gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gbGlzdC4gSXQmIzM5O3MgYSBrZXkgcGllY2UgdG8gbWFrZSB0aGUgZG93bmxvYWQgcHJvY2VzcyB3b3JrLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIGRldmljZSBwcm9wZXJseSBhbmQgZW5zdXJlIGl0IGNhbiBiZSB1cGRhdGVkIHRocm91Z2ggb3VyIHN0YW5kYXJkIG1ldGhvZHMuIEl0JiMzOTtzIGEgc2VlbWluZ2x5IHNtYWxsIHN0ZXAsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCB0aGlzIGNvbmZpZyBsaXN0IHVwZGF0ZWQsIGFzIGEgZmFpbHVyZSBvbiB0aGlzIHBpZWNlIGNhbiBsZWFkIHRvIHRpbWUtY29uc3VtaW5nIHByb2JsZW1zIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0xMDY9Y29uZmlnIFVTQl9TRVJJQUxfQ0gzNDFcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxMTU6Y29uZmlnIFVTQl9TRVJJQUxfV0hJVEVIRUFUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5MjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAgLSB3aGF04oCZcyByZWx5aW5nIG9uICp0aGlzKj8mIzM0OyBJIGtub3cgdGhlIG5hbWUsIEkmIzM5O3ZlIGxpa2VseSBzZWVuIGl0IGluIHRoZSBjb2RlYmFzZSAob3IgZXZlbiB3cml0dGVuIGl0ISkuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcHVsbCB1cCB0aGUgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIG1vZHVsZSBzaXRzIGluIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgdHJhY2sgZG93biB0aG9zZSBkZXBlbmRlbmNpZXMuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSBuZWVkIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGV5IGFyZS4gSXMgdGhpcyBhIGNvcmUgcGllY2Ugb2Ygc29tZSBsYXJnZXIgYWJzdHJhY3Rpb24gb3IganVzdCBhIGxvdy1sZXZlbCBwZXJpcGhlcmFsIGRyaXZlcj8gVGhlIGFuc3dlcnMgZGljdGF0ZSBteSBhcHByb2FjaCB0byBhbnkgcG90ZW50aWFsIGNoYW5nZXMgb3IgdHJvdWJsZXNob290aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDExNzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAxMTg6XHRcdGhlbHBcbiAxMTk6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgNCBwb3J0XG4gMTIwOlx0XHQgIFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTIzOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB3aGl0ZWhlYXQuXG4gMTI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzIyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIERldmljZSBTZWxlY3Rpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBubyBleHRlcm5hbCBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgdGhhdCYjMzk7cyBnb29kLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIFVTQiBkZXZpY2UuIEJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBVU0JfRVpVU0JfRlgyYCBpcyB0aGUgZGV2aWNlIG9mIGNob2ljZS4gTm93LCB0byB2ZXJpZnkgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhcnR1cCBzZXF1ZW5jZXMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGJlZ2lucyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgaGFyZHdhcmUgaW4gYm90aCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tleXNwYW5fZmFrZV9zdGFydHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmM9MTU4MD1zdGF0aWMgdm9pZCBrZXlzcGFuX2Nsb3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA0LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIHByZS1yZW51bWVyYXRpb24gZGV2aWNlICovXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjE2MDU6c3RhdGljIGludCBrZXlzcGFuX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA2LXtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTMwMDQ9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBrZXlzcGFuX3ByZV9kZXZpY2UgPSB7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0zMDEwLVx0Lm51bV9wb3J0c1x0XHQ9IDEsXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjMwMTE6XHQuYXR0YWNoXHRcdFx0PSBrZXlzcGFuX2Zha2Vfc3RhcnR1cCxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMzAxMi19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM9NjE3PXN0YXRpYyB2b2lkIGtleXNwYW5fcGRhX2Nsb3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM1LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIFwmIzM0O2Zha2VcJiMzNDsgZGV2aWNlIChwcmUtcmVudW1lcmF0aW9uKSAqL1xuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjM2OnN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy02Mzcte1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTcwMT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIGtleXNwYW5fcGRhX2Zha2VfZGV2aWNlID0ge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTcwNy1cdC5udW1fcG9ydHMgPVx0XHQxLFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NzA4Olx0LmF0dGFjaCA9XHRcdGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cCxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTcwOS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTAzNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJZGVudGlmeWluZyBLZXkgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBzeXN0ZW1zLCBhbmQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuIEkgc2VlIHNldmVyYWwgcG90ZW50aWFsbHkgcmVsZXZhbnQgb25lczogYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRWFjaCBvZiB0aGVzZSBzdWdnZXN0cyBhIGRpZmZlcmVudCBtZWNoYW5pc20gZm9yIGluaXRpYWxpemF0aW9uIG9yIGludGVyYWN0aW9uLiBHaXZlbiB3aGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSwgYSBxdWljayBjaGVjayBvZiBgdmljYW1gIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBhbmQgd2hlcmUgaXQmIzM5O3MgYWN0aXZhdGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRob3NlIGVudHJ5IHBvaW50cyBnaXZlIGEgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0xNjc9c3RhdGljIHZvaWQgdmljYW1fZG9zdHJlYW0oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA0LVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyMDU6LyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgdGltZSBqdXN0IGJlZm9yZSBzZF9pbml0ICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTIwNi1zdGF0aWMgaW50IHNkX2NvbmZpZyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjMtLyogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgYW5kIHJlc3VtZSB0aW1lICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjIyNDpzdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjUte1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MjgwPXN0YXRpYyB2b2lkIHNkX3N0b3AwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5My1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6Mjk0OnN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5NS17XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0zMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBzZF9kZXNjIHNkX2Rlc2MgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMjQtXHQuY29uZmlnID0gc2RfY29uZmlnLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjU6XHQuaW5pdCAgID0gc2RfaW5pdCxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MzI2Olx0LmluaXRfY29udHJvbHMgPSBzZF9pbml0X2NvbnRyb2xzLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMjctXHQuc3RhcnQgID0gc2Rfc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpc3NlY3RpbmcgdGhlIGdzcGNhIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZ3NwY2EgZHJpdmVyLCBhbmQgSSYjMzk7dmUgdHJhY2VkIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhlIHZpY2FtIGRldmljZS4gYHNkX2luaXRgIGlzIGNsZWFybHkgdGhlIGtleSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHZpZGVvIGRldmljZSwgYW5kIEkgc2VlIHRoYXQgYGdzcGNhX2Rldl9wcm9iZTJgIGlzIHRoZSBvbmUgY2FsbGluZyBpdC4gVGhhdCYjMzk7cyBpbiB0aGUgYGdzcGNhLmNgIGZpbGUg4oCTIG1ha2VzIHNlbnNlLCB0aGUgY29yZSBvZiB0aGUgZ3NwY2EgZnJhbWV3b3JrLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBzZF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGRlZmluZWQgZm9yIHZpY2FtLiBUaGlzIGxpa2VseSBzZXRzIHVwIHRoZSBkZXZpY2UmIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBhIG1hdGNoIHRvIGEgVklEL1BJRCBvciBvdGhlciBVU0IgZGVzY3JpcHRvciBjcml0ZXJpYS4gU28gYHNkX3Byb2JlYCBpcyBwcm9iYWJseSBjYWxsaW5nIGBzZF9pbml0YCB0byBraWNrIHRoaW5ncyBvZmYgYWZ0ZXIgdGhlIGluaXRpYWwgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBzZXR0aW5nIHVwIGJ1ZmZlcnMsIGV0Yy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RfZGVzYyBzZF9kZXNjID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzMxLS8qIC0tIGRldmljZSBjb25uZWN0IC0tICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjMzMjpzdGF0aWMgaW50IHNkX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMzMtXHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTM0MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc2RfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzQzLVx0LmlkX3RhYmxlICAgPSBkZXZpY2VfdGFibGUsXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjM0NDpcdC5wcm9iZSAgICAgID0gc2RfcHJvYmUsXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTM0NS1cdC5kaXNjb25uZWN0ID0gZ3NwY2FfZGlzY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzODYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBDYW1lcmEgRHJpdmVyIEVudHJ5IFBvaW50ICZhbXA7IFdEVCBDb25zaWRlcmF0aW9uKioKCkFscmlnaHQsIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50IHRvIGV4YW1pbmUg4oCTIGBzZF9wcm9iZWAgaW4gYGRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmNgLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gaWRlbnRpZnkgYWxsIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnRzIHdoZW4geW91JiMzOTtyZSBkaWdnaW5nIGludG8gYSBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgdG8gZm9sbG93IHRoZSBleGVjdXRpb24gZmxvdy4KCk5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCBgemlpcmF2ZV93ZHQuY2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlbGF0ZWQgdG8gd2F0Y2hkb2cgdGltZXIgZnVuY3Rpb25hbGl0eSwgcGVyaGFwcyB1c2VkIGZvciBlbnN1cmluZyB0aGUgY2FtZXJhIHJlbWFpbnMgcmVzcG9uc2l2ZSBvciBmb3IgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucy4gV2UgYXJlIGFzc3VtaW5nIGEgZGlyZWN0IGNvbm5lY3Rpb24sIG9yIGEgY29tcG9uZW50IG9mIHN1Y2ggYSBjb25uZWN0aW9uLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgaGFyZHdhcmUgZmFpbHVyZXMgYXJlIGhhbmRsZWQsIG9yIHRoZSBnZW5lcmFsIHN0YWJpbGl0eSBvZiBhIHN5c3RlbSwgc28gdGhpcyBpcyBhIGtleSBhcmVhIHRvIGFzc2Vzcy4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgb3ZlcmxhcCBvciBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBjYW1lcmEgZHJpdmVyIGFuZCB0aGUgd2F0Y2hkb2cgbWVjaGFuaXNtOyB0aGF0IGNvdWxkIGJlIHJlYWxseSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emlpcmF2ZV9maXJtX3ZlcmlmeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjY5PXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3dyaXRlX3BrdChzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5Mi1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzoyOTM6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0yOTQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTM0MD1zdGF0aWMgaW50IHppaXJhdmVfZmlybV91cGxvYWQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTEtXHQvKiBTdGFydCBmaXJtd2FyZSB2ZXJpZmljYXRpb24gKi9cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozOTI6XHRyZXQgPSB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHdkZCwgZncpO1xuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emlpcmF2ZV9maXJtX3VwbG9hZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMzOS1cbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNDA6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zNDEtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTUwNj1zdGF0aWMgc3NpemVfdCB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtNTI0LVxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjUyNTpcdGVyciA9IHppaXJhdmVfZmlybV91cGxvYWQoXHUwMDI2d19wcml2LVx1MDAzZXdkZCwgZncpO1xuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTUyNi1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMTUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIFN0b3JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtYCwgdGhhdCYjMzk7cyBhIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uLCBnb3QgaXQuIFJpZ2h0LCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBnb2luZyB0byBiZSB0cmlnZ2VyZWQgd2hlbmV2ZXIgc29tZW9uZSB3cml0ZXMgdG8gYSBzcGVjaWZpYyBzeXNmcyBmaWxlLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHN5c2ZzIGZpbGVzIHRoZW1zZWx2ZXMgYXJlIHRhcmdldHMgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgdGhpcyBmdW5jdGlvbiB3aXRoIGNyYWZ0ZWQgaW5wdXQuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgemwzODA2MC5jYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDM4X2xvYWRfZmlybXdhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTUxPXN0YXRpYyBpbnQgemwzOF9md19zZW5kX3hhZGRyKHN0cnVjdCByZWdtYXAgKnJlZ21hcCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNjEtXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoxNjI6c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy0xNjMte1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTU1Mj1zdGF0aWMgaW50IHpsMzhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTgyLVxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM6NTgzOlx0ZXJyID0gemwzOF9sb2FkX2Zpcm13YXJlKGRldiwgcHJpdi1cdTAwM2VyZWdtYXApO1xuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTg0LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MzAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIHpsMzhfc3BpX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB6bDM4X3NwaV9wcm9iZWAgaXMgY2xlYXJseSB0aGUgcHJvYmUgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGZvciB0aGUgYHpsMzgwNjBgIGRldmljZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50IOKAkyBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIgdG8gYmUgaW5pdGlhbGl6ZWQsIGxpa2VseSBoYW5kbGluZyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsIHNldHVwLiBOb3csIHNpbmNlIGl0IHJlbGF0ZXMgdG8gU1BJLCBteSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgaWxpMjEweC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwYXJhbGxlbHMgd2l0aCB0aGUgemwzODA2MCBzZXR1cC4gTWF5YmUgdGhlcmUmIzM5O3Mgc29tZSBkZXNpZ24gZWxlbWVudCBvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSBjYW4gZ2xlYW4gZm9yIHVzZSBpbiB0aGUgemwzODA2MCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbGkyNTF4X2Zpcm13YXJlX3RvX2J1ZmZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz01OTU9c3RhdGljIERFVklDRV9BVFRSKGNhbGlicmF0ZSwgU19JV1VTUiwgTlVMTCwgaWxpMjEweF9jYWxpYnJhdGUpO1xuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk2LVxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM6NTk3OnN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTU5OC1cdFx0XHRcdFx0ICAgIHUxNiAqYWNfZW5kLCB1MTYgKmRmX2VuZClcbi0tXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg4Mi1cdGNvbnN0IHU4KiBmd2J1ZiBfX2ZyZWUoa3ZmcmVlKSA9XG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYzo4ODM6XHRcdFx0aWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoZncsIFx1MDAyNmFjX2VuZCwgXHUwMDI2ZGZfZW5kKTtcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg4NC1cdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKGZ3YnVmKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyOTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmluaW5nIHRoZSBUYXJnZXQgTGlzdCBmb3IgRmlybXdhcmUgVXBkYXRlIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlYCwgd2hpY2ggSSBrbm93IGlzIGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24uICBUaGlzIG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzIGludG8gdGhlIGZpcm13YXJlIHVwZGF0ZSBwcm9jZXNzLiAgSSB3YXMgaW5pdGlhbGx5IGdpdmVuIGEgbGlzdCBvZiBwb3NzaWJpbGl0aWVzLCBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgLCBgc2RfcHJvYmVgIChpbiBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2ApLCBgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybWAsIGB6bDM4X3NwaV9wcm9iZWAsIGFuZCB0aGUgaW5pdGlhbCBmb2N1cywgYGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlYCBpdHNlbGYuCgpJIHJlYWxpemVkIEkgZG9uJiMzOTt0IG5lZWQgKmFsbCogb2YgdGhlbSwganVzdCBhIGdvb2Qgc2VsZWN0aW9uLiBTbyBJIHN0YXJ0ZWQgd2l0aCBhIHNlbGVjdGlvbjogdGhlIGZpcnN0IHNldCBvZiB0aG9zZSBsaXN0ZWQuCgpOb3csIEkgbmVlZCB0byBiZSBzdHJhdGVnaWMuICBJIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMgYXMgZW50cnkgcG9pbnRzLCBzaW5jZSB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUHJvYmUgZnVuY3Rpb25zLCBmb3IgaW5zdGFuY2UsIGFyZSB1c3VhbGx5IHN0YXRpYywgYnV0IG5vdCBpbmxpbmVkLCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gZm9yIHJlZ2lzdHJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBsaW5rYWdlIHRvIHByb3ZpZGUgZ29vZCBzZWxlY3Rpb24uCgpJIG1hZGUgYSBub3RlIHRoYXQgYHNkX3Byb2JlYCBpcyBhIGdlbmVyaWMgbmFtZSBhbmQgY2hlY2tlZCB0byBzZWUgaWYgaXQmIzM5O3Mgc3RhdGljLiBJdCBpcywgaW4gYHZpY2FtLmNgLiBXaGlsZSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSB0YXJnZXRlZCwgSSB3YW50IHRvIHByaW9yaXRpemUgdGhlIG5vbi1zdGF0aWMgb25lcyBpZiBwb3NzaWJsZSwgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMuCgpJIHRoZW4gaWRlbnRpZmllZCBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFuZCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFzIGV4cG9ydGVkIHN5bWJvbHMsIHNvIHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMuICBJIGFsc28gZm91bmQgdGhhdCBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCwgYGloZXhfdmFsaWRhdGVfZndgLCBhbmQgYGloZXhfbmV4dF9iaW5yZWNgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBJIHJlbW92ZWQgdGhlbSBmcm9tIGNvbnNpZGVyYXRpb24uCgpUaGVyZWZvcmUsIG15IGJlc3QgdGFyZ2V0cyBhcmU6Ci0gICBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgCi0gICBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgCi0gICBgZW1pMjZfcHJvYmVgCi0gICBgZW1pNjJfcHJvYmVgCi0gICBgZWRnZV9zdGFydHVwYAotICAgYGltc19wY3VfcHJvYmVgCi0gICBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYAotICAgYGtleXNwYW5fZmFrZV9zdGFydHVwYAotICAgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGAKCkkgZG91YmxlLWNoZWNrZWQgYGVtaTI2X3Byb2JlYCBhbmQgaXQgKmlzKiBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBsaXN0IGp1c3QgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFuZCBhIGZldyBpbXBvcnRhbnQgc3RhdGljIHByb2JlIGZ1bmN0aW9ucy4KCk5leHQsIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9ucy4gVGhlIGNvbmZpZ3MgSSBoYXZlIGFyZTogYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEkgcmVtZW1iZXIgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBgVVNCX0dTUENBX1ZJQ0FNYCBkZXBlbmRzIG9uIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4KClRoZSBpbnN0cnVjdGlvbnMgc3RhdGUgdG8gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZCBmb3IgdGhlIGNvZGUgdG8gY29tcGlsZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gIGBWSURFT19ERVZgIGlzIHN0YW5kYXJkLCBidXQgYFVTQl9HU1BDQWAgaXMgYSBzdWJzeXN0ZW0uCgpJJiMzOTttIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSBvbmVzIHdpdGggbm8gb3Igc2ltcGxlIGRlcGVuZGVuY2llczoKLSAgIGBJTlBVVF9JTVNfUENVYCAoZGVwZW5kcyBvbiBgVVNCYCwgYExFRFNfQ0xBU1NgKQotICAgYFVTQl9FTUkyNmAKLSAgIGBVU0JfRU1JNjJgCi0gICBgVVNCX1NFUklBTF9FREdFUE9SVGAKLSAgIGBVU0JfU0VSSUFMX0tFWVNQQU5gCi0gICBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAKLSAgIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAKCkkgY2hlY2tlZCBgTEVEU19DTEFTU2AsIHdoaWNoIGlzIHN0YW5kYXJkLgoKSSB3aWxsIGFsc28gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFVTQl9TRVJJQUxfS0VZU1BBTmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMjpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbiAzMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuIDMxNDpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMTU6XHRcdGhlbHBcbiAzMTY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgS2V5c3BhbiBVU0IgdG8gc2VyaWFsIGNvbnZlcnRlclxuIDMxNzpcdFx0ICBkZXZpY2VzLiAgVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mIEtleXNwYW4mIzM5O3Mgb2ZmaWNpYWwgZmlybXdhcmVcbiAzMTg6XHRcdCAgYW5kIHdhcyBkZXZlbG9wZWQgd2l0aCB0aGVpciBzdXBwb3J0LiAgWW91IG11c3QgYWxzbyBpbmNsdWRlXG4gMzE5Olx0XHQgIGZpcm13YXJlIHRvIHN1cHBvcnQgeW91ciBwYXJ0aWN1bGFyIGRldmljZShzKS5cbiAzMjA6XHRcbiAzMjE6XHRcdCAgU2VlIFx1MDAzY2h0dHA6Ly9ibGVtaW5ncy5vcmcvaHVnaC9rZXlzcGFuLmh0bWxcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IFVTQiBTZXJpYWwgS2V5U3BhbiBQREEqKgoKUmlnaHQsIG5vIGluaXRpYWwgZGVwZW5kZW5jaWVzIGxlYXBpbmcgb3V0IGF0IG1lLiBBbHdheXMgYSBnb29kIHNpZ24uIExldCYjMzk7cyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcywgdGhvdWdoLiBUaW1lIHRvIGRyaWxsIGRvd24uIFRoZSBmaXJzdCBwb3J0IG9mIGNhbGwsIG5hdHVyYWxseSwgaXMgdG8gcmlnb3JvdXNseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyBhcmUuIEdvdHRhIGVuc3VyZSB0aGVyZSBhcmUgbm8gaGlkZGVuIGdvdGNoYXMgb3IgY29uZmxpY3RzIGx1cmtpbmcgYmVuZWF0aCB0aGUgc3VyZmFjZS4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgaXRzIGJ1aWxkIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMTpcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5fUERBXG4gMzAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDMwMzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAzMDQ6XHRcdGhlbHBcbiAzMDU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBLZXlzcGFuIFBEQSwgWGlyY29tIG9yIEVudHJlZ2Egc2luZ2xlXG4gMzA2Olx0XHQgIHBvcnQgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLiBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2ZcbiAzMDc6XHRcdCAgZmlybXdhcmUgZGV2ZWxvcGVkIGZyb20gc2NyYXRjaCBieSBCcmlhbiBXYXJuZXIuXG4gMzA4Olx0XG4gMzA5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDMxMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODcxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IEEgUHJlcmVxdWlzaXRlKioKCkFscmlnaHQsIG5vIGltbWVkaWF0ZSBzaG93c3RvcHBlcnMgZmxhZ2dlZCBpbml0aWFsbHkuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gaXMgdmVyaWZ5IGRlcGVuZGVuY2llcyBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBObyBhc3N1bXB0aW9ucy4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAuIFVuZGVyc3RhbmQgd2hhdCBpcyBsaW5rZWQgdG8gdGhpcyBtb2R1bGUgdG8gYXZvaWQgYnJlYWtpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRpZWQgaW50byB0aGF0LiBHb3R0YSBrbm93IHdoZXJlIHdlIHN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuIDExNzpcdFx0c2VsZWN0IFVTQl9FWlVTQl9GWDJcbiAxMTg6XHRcdGhlbHBcbiAxMTk6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgNCBwb3J0XG4gMTIwOlx0XHQgIFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTIzOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB3aGl0ZWhlYXQuXG4gMTI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjA2CgkJCQkJCQlvdXRwdXQ6IDMwOQoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBQbGFuOiBVU0IgRmlybXdhcmUgUGFyc2luZyBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTm8gZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBnb29kIOKAkyBpdCBtYWtlcyB0aGluZ3Mgc2ltcGxlci4gRXNzZW50aWFsbHksIHRoZSBjb3JlIHByb2JsZW0gaXMgcmVsYXRlZCB0byBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgYW4gaW5maW5pdGUgbG9vcCB3aXRoaW4gdGhlIEludGVsIEhFWCBmaXJtd2FyZSBwYXJzaW5nIHJvdXRpbmVzLCBzcGVjaWZpY2FsbHkgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGFyZSBjcnVjaWFsIGZvciBhIGhhbmRmdWwgb2YgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgdGhlaXIgZmlybXdhcmUuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgYW5kIHBhc3MgdGhlbSB2aWEgYHJlcXVlc3RfZmlybXdhcmVgLgoKU28sIHRoZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gdG8gZW5hYmxlIGFuZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgdnVsbmVyYWJpbGl0eSBhcmU6IGBJTlBVVF9JTVNfUENVYCwgYExFRFNfQ0xBU1NgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYW5kIGBVU0JfU0VSSUFMX1dISVRFSEVBVGAuIFRoZXNlIGVuYWJsZSB0aGUgdGFyZ2V0IFVTQiBkcml2ZXJzLgoKTm93LCByZWdhcmRpbmcgdGhlIGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBuZWVkIG15IGF0dGVudGlvbiwgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSB0aGUgcHJvYmUgYW5kIHN0YXJ0dXAgZnVuY3Rpb25zIGZvciB0aGUgYWZvcmVtZW50aW9uZWQgVVNCIGRyaXZlcnMsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24gaGFwcGVuLiBIZXJlJiMzOTtzIGEgcnVuZG93bjogYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRnV6emluZyB0aGVzZSBzaG91bGQgYmUgYSBnb29kIHBsYW4gdG8gZXhlcmNpc2UgdGhlIHZ1bG5lcmFibGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlIHBhdGggdG8gdmFsaWRhdGluZyB0aGlzIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lOUFVUX0lNU19QQ1UmIzM0OywKICAgICYjMzQ7TEVEU19DTEFTUyYjMzQ7LAogICAgJiMzNDtVU0JfRU1JMjYmIzM0OywKICAgICYjMzQ7VVNCX0VNSTYyJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfRURHRVBPUlQmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfS0VZU1BBTl9QREEmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9XSElURUhFQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtlbWkyNl9wcm9iZSYjMzQ7LAogICAgJiMzNDtlbWk2Ml9wcm9iZSYjMzQ7LAogICAgJiMzNDtlZGdlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7aW1zX3BjdV9wcm9iZSYjMzQ7LAogICAgJiMzNDt3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9mYWtlX3N0YXJ0dXAmIzM0OywKICAgICYjMzQ7a2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5QVVRfSU1TX1BDVSYjMzQ7LAogICAgJiMzNDtMRURTX0NMQVNTJiMzNDssCiAgICAmIzM0O1VTQl9FTUkyNiYjMzQ7LAogICAgJiMzNDtVU0JfRU1JNjImIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9FREdFUE9SVCYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX0tFWVNQQU4mIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9LRVlTUEFOX1BEQSYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMX1dISVRFSEVBVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2V6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O2VtaTI2X3Byb2JlJiMzNDssCiAgICAmIzM0O2VtaTYyX3Byb2JlJiMzNDssCiAgICAmIzM0O2VkZ2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtpbXNfcGN1X3Byb2JlJiMzNDssCiAgICAmIzM0O3doaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX2Zha2Vfc3RhcnR1cCYjMzQ7LAogICAgJiMzNDtrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTQuNjcyODI4ODcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5MDExMjI3MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklOUFVUX0lNU19QQ1VcIixcbiAgICBcIkxFRFNfQ0xBU1NcIixcbiAgICBcIlVTQl9FTUkyNlwiLFxuICAgIFwiVVNCX0VNSTYyXCIsXG4gICAgXCJVU0JfU0VSSUFMX0VER0VQT1JUXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5cIixcbiAgICBcIlVTQl9TRVJJQUxfS0VZU1BBTl9QREFcIixcbiAgICBcIlVTQl9TRVJJQUxfV0hJVEVIRUFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlbWkyNl9wcm9iZVwiLFxuICAgIFwiZW1pNjJfcHJvYmVcIixcbiAgICBcImVkZ2Vfc3RhcnR1cFwiLFxuICAgIFwiaW1zX3BjdV9wcm9iZVwiLFxuICAgIFwid2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJrZXlzcGFuX2Zha2Vfc3RhcnR1cFwiLFxuICAgIFwia2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzIGluIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgIGFuZCBhcmUgdXNlZCBieSBzZXZlcmFsIFVTQiBkcml2ZXJzIHRvIGxvYWQgYW5kIHZhbGlkYXRlIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyBhbmQgcHJvdmlkaW5nIGFyYml0cmFyeSBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24uIEZ1enppbmcgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBvZiB0aGVzZSBVU0IgZHJpdmVycyB3aWxsIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNTo1NC42NzI4MzUxMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNjQzNzgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToyNTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2loZXguaCBiL2luY2x1ZGUvbGludXgvaWhleC5oXFxuaW5kZXggYjgyNDg3N2U2ZDFiNi4uNGVlNGI1OTYwZjgyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2loZXguaFxcbisrKyBiL2luY2x1ZGUvbGludXgvaWhleC5oXFxuQEAgLTM4LDkgKzM4LDEzIEBAIF9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG4gc3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxcbiBpaGV4X25leHRfYmlucmVjKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqcmVjKVxcbiB7XFxuLVxcdHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbitcXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKm5leHQ7XFxuIFxcbi1cXHRyZXR1cm4gYmUxNl90b19jcHUocmVjLVxcdTAwM2VsZW4pID8gcmVjIDogTlVMTDtcXG4rXFx0aWYgKCFiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbikpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0bmV4dCA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbitcXHRyZXR1cm4gYmUxNl90b19jcHUobmV4dC1cXHUwMDNlbGVuKSA/IG5leHQgOiBOVUxMO1xcbiB9XFxuIFxcbiAvKiBDaGVjayB0aGF0IGloZXhfbmV4dF9iaW5yZWMoKSB3b24ndCB0YWtlIHVzIG9mZiB0aGUgZW5kIG9mIHRoZSBpbWFnZS4uLiAqL1xcbkBAIC00OCw2ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGloZXhfdmFsaWRhdGVfZncoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKmVuZCwgKnJlYztcXG4gXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqZW5kKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRyZWMgPSAoY29uc3Qgdm9pZCAqKWZ3LVxcdTAwM2VkYXRhO1xcbiBcXHRlbmQgPSAoY29uc3Qgdm9pZCAqKVxcdTAwMjZmdy1cXHUwMDNlZGF0YVtmdy1cXHUwMDNlc2l6ZSAtIHNpemVvZigqZW5kKV07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNTo1NC45OTk5NTE3NjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTg2ODQwOTQzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5QVVRfSU1TX1BDVVwiLFxuICAgIFwiTEVEU19DTEFTU1wiLFxuICAgIFwiVVNCX0VNSTI2XCIsXG4gICAgXCJVU0JfRU1JNjJcIixcbiAgICBcIlVTQl9TRVJJQUxfRURHRVBPUlRcIixcbiAgICBcIlVTQl9TRVJJQUxfS0VZU1BBTlwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOX1BEQVwiLFxuICAgIFwiVVNCX1NFUklBTF9XSElURUhFQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImVtaTI2X3Byb2JlXCIsXG4gICAgXCJlbWk2Ml9wcm9iZVwiLFxuICAgIFwiZWRnZV9zdGFydHVwXCIsXG4gICAgXCJpbXNfcGN1X3Byb2JlXCIsXG4gICAgXCJ3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWRcIixcbiAgICBcImtleXNwYW5fZmFrZV9zdGFydHVwXCIsXG4gICAgXCJrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGluZmluaXRlIGxvb3Agd2hlbiBwYXJzaW5nIG1hbGZvcm1lZCBJbnRlbCBIRVggZmlybXdhcmUgZmlsZXMgaW4gYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAgYW5kIGFyZSB1c2VkIGJ5IHNldmVyYWwgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgZmlybXdhcmUuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGNvZGUgYnkgZW11bGF0aW5nIFVTQiBkZXZpY2VzIGFuZCBwcm92aWRpbmcgYXJiaXRyYXJ5IGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbi4gRnV6emluZyB0aGUgcHJvYmUgYW5kIHN0YXJ0dXAgZnVuY3Rpb25zIG9mIHRoZXNlIFVTQiBkcml2ZXJzIHdpbGwgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI2Zjk2YjlkNGVlYWIwNTIwNTIwODExMTNlODY1NzdjZDZlMmZlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjI1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9paGV4LmggYi9pbmNsdWRlL2xpbnV4L2loZXguaFxuaW5kZXggYjgyNDg3N2U2ZDFiNi4uNGVlNGI1OTYwZjgyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaWhleC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2loZXguaFxuQEAgLTM4LDkgKzM4LDEzIEBAIF9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcbiBzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqXG4gaWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcbiB7XG4tXHRyZWMgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbitcdGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqbmV4dDtcbiBcbi1cdHJldHVybiBiZTE2X3RvX2NwdShyZWMtXHUwMDNlbGVuKSA/IHJlYyA6IE5VTEw7XG4rXHRpZiAoIWJlMTZfdG9fY3B1KHJlYy1cdTAwM2VsZW4pKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdG5leHQgPSBfX2loZXhfbmV4dF9iaW5yZWMocmVjKTtcbitcdHJldHVybiBiZTE2X3RvX2NwdShuZXh0LVx1MDAzZWxlbikgPyBuZXh0IDogTlVMTDtcbiB9XG4gXG4gLyogQ2hlY2sgdGhhdCBpaGV4X25leHRfYmlucmVjKCkgd29uJ3QgdGFrZSB1cyBvZmYgdGhlIGVuZCBvZiB0aGUgaW1hZ2UuLi4gKi9cbkBAIC00OCw2ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGloZXhfdmFsaWRhdGVfZncoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKmVuZCwgKnJlYztcbiBcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmVuZCkpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0cmVjID0gKGNvbnN0IHZvaWQgKilmdy1cdTAwM2VkYXRhO1xuIFx0ZW5kID0gKGNvbnN0IHZvaWQgKilcdTAwMjZmdy1cdTAwM2VkYXRhW2Z3LVx1MDAzZXNpemUgLSBzaXplb2YoKmVuZCldO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTQuOTk5OTUyOTY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0ODI1Nzk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElIRVggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgaW5jbHVkZS9saW51eC9paGV4LmhgLCBhbmQgaXQncyB0b3VjaGluZyB0d28gZnVuY3Rpb25zOiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGBpaGV4X25leHRfYmlucmVjYCBoYXMgaGFkIGEgc2FmZXR5IGNoZWNrIGFkZGVkLiBCZWZvcmUgY2FsbGluZyBgX19paGV4X25leHRfYmlucmVjKHJlYylgLCBpdCBub3cgdmVyaWZpZXMgdGhlIGxlbmd0aCwgYHJlYy1cdTAwM2VsZW5gLiBTbWFydCBtb3ZlOyB0aGF0IGNvdWxkIHByZXZlbnQgc29tZSBuYXN0eSBidWZmZXIgb3ZlcmZsb3dzLlxuXG5UaGVuLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHRvIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgYWxsb2NhdGVkIGZpcm13YXJlIHNpemUgKGBmdy1cdTAwM2VzaXplYCkgaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBgZW5kYCByZWNvcmQgYmVmb3JlIHNldHRpbmcgdGhlIGBlbmRgIGFuZCBgcmVjYCBwb2ludGVycy4gVGhpcyBsaWtlbHkgYWltcyB0byBhdm9pZCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuIEl0J3MgYSBwcnVkZW50IGFkZGl0aW9uLCBkZWZpbml0ZWx5IG1ha2VzIHRoZSBjb2RlIG1vcmUgcm9idXN0LlxuXG5Ob3csIG15IG5leHQgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIGFjdHVhbGx5ICp1c2VkKj8gSSBuZWVkIHRvIHNlZSB0aGUgY2FsbCBzaXRlcyB0byBmdWxseSBncmFzcCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgdXNlIG9mIGJvdGggYGloZXhfdmFsaWRhdGVfZndgIGFuZCBgaWhleF9uZXh0X2JpbnJlY2AgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBiZWluZyBhZGRyZXNzZWQgYW5kIHRoZSBvdmVyYWxsIGVmZmVjdCBvbiB0aGUgSUhFWCBwYXJzaW5nIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjU6NTkuMjQ4MjE0MjcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTQ4MzM3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWhleF92YWxpZGF0ZV9md1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTk2Nz1zdGF0aWMgdm9pZCBpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmUoY29uc3Qgc3RydWN0IGZpcm13YXJlICpfZncsXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTk3OS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjk4MDpcXHRlcnJvciA9IGloZXhfdmFsaWRhdGVfZncoZncpO1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTgxLVxcdGlmIChlcnJvcikge1xcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9Mzk9aWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTUwLS8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbid0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6NTE6c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTUyLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oPTcxPXN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTgwLVxcdFxcdHJldHVybiByZXQ7XFxuaW5jbHVkZS9saW51eC9paGV4Lmg6ODE6XFx0cmV0ID0gaWhleF92YWxpZGF0ZV9mdyhsZncpO1xcbmluY2x1ZGUvbGludXgvaWhleC5oLTgyLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MDEuMzQzMDUzMDQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTk2Njg5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWhleF9uZXh0X2JpbnJlY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTgxMD1zdGF0aWMgdW5zaWduZWQgaW50IGltc19wY3VfY291bnRfZndfcmVjb3Jkcyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTYtXFx0XFx0Y291bnQrKztcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjgxNzpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy04MTgtXFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz04Njg9c3RhdGljIGludCBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlKHN0cnVjdCBpbXNfcGN1ICpwY3UsXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTkyNi1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjkyNzpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy05MjgtXFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9NTk3PXN0YXRpYyBjb25zdCB1OCAqaWxpMjUxeF9maXJtd2FyZV90b19idWZmZXIoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTYyOC1cXHRcXHRtZW1jcHkoZndfYnVmICsgZndfYWRkciwgcmVjLVxcdTAwM2VkYXRhLCBmd19sZW4pO1xcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjYyOTpcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNjMwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MjI0PXN0YXRpYyBpbnQgc2RfaW5pdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI0My1cXHR9XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyNDQ6XFx0Zm9yIChyZWMgPSAodm9pZCAqKWZ3LVxcdTAwM2VkYXRhOyByZWM7IHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKSkge1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjQ1LVxcdFxcdGxlbiA9IGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYz03MT1zdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTE2LVxcdFxcdFxcdGdvdG8gd3JhcGVycjtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTE3OlxcdFxcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xMzctXFx0XFx0XFx0aSArPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjEzODpcXHRcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTEzOS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTUxLVxcdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTUyOlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTUzLVxcdFxcdGVyciA9IGVtaTI2X3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0xNjgtXFx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjE2OTpcXHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE3MC1cXHRcXHRpZiAoIUlOVEVSTkFMX1JBTShiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpKSkge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTE4NC1cXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6MTg1OlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtMTg2LVxcdFxcdGlmIChJTlRFUk5BTF9SQU0oYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSkpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz03OT1zdGF0aWMgaW50IGVtaTYyX2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTIzLVxcdFxcdFxcdGdvdG8gd3JhcGVycjtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTI0OlxcdFxcdHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTI1LVxcdH1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNDQtXFx0XFx0XFx0aSArPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWxlbik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE0NTpcXHRcXHRcXHRyZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYyk7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE0Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTU4LVxcdGZvciAocmVjID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWxvYWRlcl9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTU5OlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTYwLVxcdFxcdGVyciA9IGVtaTYyX3dyaXRlbWVtb3J5KGRldiwgYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xNzUtXFx0Zm9yIChyZWMgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmVfZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjE3NjpcXHQgICAgIHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE3Ny1cXHRcXHRpZiAoIUlOVEVSTkFMX1JBTShiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpKSkge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTE5MS1cXHRmb3IgKHJlYyA9IChjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKilmaXJtd2FyZV9mdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTkyOlxcdCAgICAgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTkzLVxcdFxcdGlmIChJTlRFUk5BTF9SQU0oYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKSkpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz01OD1zdGF0aWMgaW50IGV6dXNiX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy03OC1cXHRyZWNvcmQgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmUtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjc5OlxcdGZvciAoOyByZWNvcmQ7IHJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKSkge1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy04MC1cXHRcXHRpZiAoYmUzMl90b19jcHUocmVjb3JkLVxcdTAwM2VhZGRyKSBcXHUwMDNlIGZ4Lm1heF9pbnRlcm5hbF9hZHJlc3MpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy05OC1cXHRyZWNvcmQgPSAoY29uc3Qgc3RydWN0IGloZXhfYmlucmVjICopZmlybXdhcmUtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjk5OlxcdGZvciAoOyByZWNvcmQ7IHJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKSkge1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xMDAtXFx0XFx0aWYgKGJlMzJfdG9fY3B1KHJlY29yZC1cXHUwMDNlYWRkcikgXFx1MDAzYz0gZngubWF4X2ludGVybmFsX2FkcmVzcykge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MzEwPXN0YXRpYyB2b2lkIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zNzEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzcyOlxcdFxcdGZvciAocmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpOyByZWM7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzczOlxcdFxcdCAgICAgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzc0LVxcdFxcdFxcdEJvb3RhZGRyID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI2Mjc9c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NzMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY3NDpcXHRmb3IgKHJlYyA9IGloZXhfbmV4dF9iaW5yZWMocmVjKTsgcmVjO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI2NzU6XFx0ICAgICByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjc2LVxcdFxcdE9wZXJhZGRyID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz0yOTM9c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zMDAtXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjMwMTpcXHRmb3IgKHJlYyA9ICh2b2lkICopZnctXFx1MDAzZWRhdGE7IHJlYzsgcmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTMwMi1cXHRcXHRjb25zdCB1MTYgbGVuID0gYmUxNl90b19jcHUocmVjLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTM0MD1zdGF0aWMgaW50IHppaXJhdmVfZmlybV91cGxvYWQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTM3MC1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM6MzcxOlxcdGZvciAocmVjID0gKHZvaWQgKilmdy1cXHUwMDNlZGF0YTsgcmVjOyByZWMgPSBpaGV4X25leHRfYmlucmVjKHJlYykpIHtcXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzcyLVxcdFxcdHJldCA9IHppaXJhdmVfZmlybV93cml0ZV9wa3Qod2RkLCBiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWFkZHIpLFxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9MzA9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKlxcbmluY2x1ZGUvbGludXgvaWhleC5oOjMxOl9faWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG5pbmNsdWRlL2xpbnV4L2loZXguaC0zMi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaD0zOD1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6Mzk6aWhleF9uZXh0X2JpbnJlYyhjb25zdCBzdHJ1Y3QgaWhleF9iaW5yZWMgKnJlYylcXG5pbmNsdWRlL2xpbnV4L2loZXguaC00MC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaC00NS1cXG5pbmNsdWRlL2xpbnV4L2loZXguaDo0NjpcXHRuZXh0ID0gX19paGV4X25leHRfYmlucmVjKHJlYyk7XFxuaW5jbHVkZS9saW51eC9paGV4LmgtNDctXFx0cmV0dXJuIGJlMTZfdG9fY3B1KG5leHQtXFx1MDAzZWxlbikgPyBuZXh0IDogTlVMTDtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWhleC5oLTQ5LVxcbmluY2x1ZGUvbGludXgvaWhleC5oOjUwOi8qIENoZWNrIHRoYXQgaWhleF9uZXh0X2JpbnJlYygpIHdvbid0IHRha2UgdXMgb2ZmIHRoZSBlbmQgb2YgdGhlIGltYWdlLi4uICovXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNTEtc3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNjAtXFxuaW5jbHVkZS9saW51eC9paGV4Lmg6NjE6XFx0Zm9yICg7IHJlYyBcXHUwMDNjPSBlbmQ7IHJlYyA9IF9faWhleF9uZXh0X2JpbnJlYyhyZWMpKSB7XFxuaW5jbHVkZS9saW51eC9paGV4LmgtNjItXFx0XFx0LyogWmVybyBsZW5ndGggbWFya3MgZW5kIG9mIHJlY29yZHMgKi9cXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTE2Mj1zdGF0aWMgaW50IHpsMzhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE5OS1cXHRcXHQvKiBuZXh0ICEgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoyMDA6XFx0XFx0cmVjID0gaWhleF9uZXh0X2JpbnJlYyhyZWMpO1xcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTIwMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjAzLjA0MjczMjU4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5OTc4MDU0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaWhleCBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgSW50ZWwgSEVYIGZpcm13YXJlIGZpbGVzLCBzcGVjaWZpY2FsbHkgYnkgbW9kaWZ5aW5nIGBpaGV4X25leHRfYmlucmVjYCBhbmQgYGloZXhfdmFsaWRhdGVfZndgIHdpdGhpbiBgaW5jbHVkZS9saW51eC9paGV4LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBsb3ctbGV2ZWwgZml4IHRoYXQgY291bGQgaGF2ZSBhIHdpZGUgaW1wYWN0LCB3aGljaCBpcyBib3RoIGludHJpZ3VpbmcgYW5kIHBvdGVudGlhbGx5IGNyaXRpY2FsLlxuXG5UaGUgaXNzdWUgc2VlbXMgdG8gc3RlbSBmcm9tIGEgbGFjayBvZiByb2J1c3QgYm91bmRhcnkgY2hlY2tpbmcgd2l0aGluIHRob3NlIGZ1bmN0aW9ucy4gYGloZXhfbmV4dF9iaW5yZWNgIG5vdyBnYWlucyBhbiBhZGRpdGlvbmFsIGNoZWNrIGZvciB3aGVuIGByZWMtXHUwMDNlbGVuYCBpcyAwLiBBIHplcm8gbGVuZ3RoIHJlY29yZCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgZmlsZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgbWFsZm9ybWVkIEhFWCBmaWxlIHRoYXQgZXJyb25lb3VzbHkgc3BlY2lmaWVzIHRoZSBmaWxlIGhhcyBhIHJlY29yZCwgYnV0IHdpdGggbGVuZ3RoIDAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYGloZXhfdmFsaWRhdGVfZndgIG5vdyBjaGVja3MgaWYgdGhlIGZpcm13YXJlIHNpemUgYGZ3LVx1MDAzZXNpemVgIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIGVuZCBtYXJrZXIgYmVmb3JlIGFjY2Vzc2luZyB0aGUgZW5kIG1hcmtlci5cblxuVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgYSBjYXJlZnVsbHkgY3JhZnRlZCwgbWFsaWNpb3VzIEludGVsIEhFWCBmaWxlIGNvdWxkIHBvdGVudGlhbGx5IHRyaWdnZXIgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9yIGFuIGluZmluaXRlIGxvb3AgZHVyaW5nIGZpcm13YXJlIHBhcnNpbmcuIEdpdmVuIHRoYXQgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAgKGFuZCBsaWtlbHkgYHJlcXVlc3RfZmlybXdhcmVgIGluIGEgbW9yZSBnZW5lcmFsIHNlbnNlKSBhcmUgdXNlZCBieSBhIHNpZ25pZmljYW50IG51bWJlciBvZiBkcml2ZXJzIGFjcm9zcyB2YXJpb3VzIHN1YnN5c3RlbXMsIHRoZSBhdHRhY2sgc3VyZmFjZSBpcyByZWxhdGl2ZWx5IGxhcmdlLiBJIHNlZSBpdCdzIHVzZWQgaW4gZHJpdmVycyBmb3IgaW5wdXQgZGV2aWNlcyAobGlrZSB0b3VjaHNjcmVlbnMgYW5kIHRoZSBJTVMgUGFzc2VuZ2VyIENvbnRyb2wgVW5pdCksIG1lZGlhIGRldmljZXMgKFVTQiBjYW1lcmFzKSwgVVNCIGF1ZGlvIGludGVyZmFjZXMsIFVTQiBzZXJpYWwgZHJpdmVycywgd2F0Y2hkb2cgdGltZXJzLCBhbmQgYXVkaW8gY29kZWNzLiBUaGF0J3MgYSBkaXZlcnNlIHJhbmdlLCBhbmQgZWFjaCBjb3VsZCBiZSBzdXNjZXB0aWJsZS5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGhvdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMgdmlhIGBkdW1teV9oY2QvcmF3LWdhZGdldGAuIFRoaXMgaXMga2V5LiBUaGUgZmFjdCB0aGF0IHRoZSBrZXJuZWwgaGFzIGFuIGVzdGFibGlzaGVkIGZ1enppbmcgZnJhbWV3b3JrIHRoYXQgY2FuIGRpcmVjdGx5IHRyaWdnZXIgdGhlc2UgZmlybXdhcmUgbG9hZGluZyBwYXRocyB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gbWFrZXMgdGhlIHZ1bG5lcmFiaWxpdHkgaW5jcmVkaWJseSByaXBlIGZvciBleHBsb2l0YXRpb24gYW5kIGRpc2NvdmVyeS4gSXQgc2VlbXMgbGlrZSB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IgaXMgbm90IG92ZXJseSBjb21wbGljYXRlZC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBoaWdoLXByaW9yaXR5IGFyZWEgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBkcml2ZXJzIGxpc3RlZCwgd2l0aCBhIHBhcnRpY3VsYXIgZW1waGFzaXMgb24gZ2VuZXJhdGluZyBhbmQgZmVlZGluZyB0aGVtIG1hbGZvcm1lZCBJbnRlbCBIRVggZmlsZXMuIFdlIGNhbiBnZXQgYSBsb3Qgb2YgbWlsZWFnZSBieSBjaGVja2luZyBgcmVxdWVzdF9paGV4X2Zpcm13YXJlYCBhbmQgaXQncyB1c2FnZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMTQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjEyLjA0MDU0MTI5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAzMzM4ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfaWhleF9maXJtd2FyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTEyMDQ9c3RhdGljIHNzaXplX3QgaW1zX3BjdV91cGRhdGVfZmlybXdhcmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0xMjIwLVxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgX19mcmVlKGZpcm13YXJlKSA9IE5VTEw7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoxMjIxOlxcdGVycm9yID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgSU1TX1BDVV9GSVJNV0FSRV9OQU1FLCBwY3UtXFx1MDAzZWRldik7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0xMjIyLVxcdGlmIChlcnJvcikge1xcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM9ODY1PXN0YXRpYyBzc2l6ZV90IGlsaTIxMHhfZmlybXdhcmVfdXBkYXRlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jLTg3NC1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3IF9fZnJlZShmaXJtd2FyZSkgPSBOVUxMO1xcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjg3NTpcXHRlcnJvciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3bmFtZSwgZGV2KTtcXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy04NzYtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTIyND1zdGF0aWMgaW50IHNkX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMzEtXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyMzI6XFx0cmV0ID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgVklDQU1fRklSTVdBUkUsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMzMtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYz03MT1zdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODUtXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjg2OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2bG9hZGVyX2Z3LCBcXFwiZW1pMjYvbG9hZGVyLmZ3XFxcIiwgXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtODctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy04OS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTA6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZiaXRzdHJlYW1fZncsIFxcXCJlbWkyNi9iaXRzdHJlYW0uZndcXFwiLFxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05MS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy05NC1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6OTU6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZV9mdywgXFxcImVtaTI2L2Zpcm13YXJlLmZ3XFxcIixcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMtOTYtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM9Nzk9c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk0LVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzo5NTpcXHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmxvYWRlcl9mdywgXFxcImVtaTYyL2xvYWRlci5md1xcXCIsIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTk2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtOTgtXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjk5OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2Yml0c3RyZWFtX2Z3LCBcXFwiZW1pNjIvYml0c3RyZWFtLmZ3XFxcIixcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMTAwLVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jLTEwMy1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6MTA0OlxcdGVyciA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZmlybXdhcmVfZncsIEZJUk1XQVJFX0ZXLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0xMDUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jPTU4PXN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTY1LVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzo2NjpcXHRpZiAocmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZmlybXdhcmVfcGF0aCxcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtNjctXFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYz0zMTA9c3RhdGljIHZvaWQgdXBkYXRlX2VkZ2Vwb3J0X0UyUFJPTShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzozMzU6XFx0cmVzcG9uc2UgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTMzNi1cXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmVkZ2Vfc2VyaWFsLVxcdTAwM2VzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI2Mjc9c3RhdGljIHZvaWQgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2NTYtXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjY1NzpcXHRyZXNwb25zZSA9IHJlcXVlc3RfaWhleF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjY1OC1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNmVkZ2Vfc2VyaWFsLVxcdTAwM2VzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz01MDY9c3RhdGljIHNzaXplX3QgemlpcmF2ZV93ZHRfc3lzZnNfc3RvcmVfZmlybShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtNTE0LVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzo1MTU6XFx0ZXJyID0gcmVxdWVzdF9paGV4X2Zpcm13YXJlKFxcdTAwMjZmdywgWklJUkFWRV9GV19OQU1FLCBkZXYpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MTYtXFx0aWYgKGVycikge1xcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4Lmg9NTE9c3RhdGljIGlubGluZSBpbnQgaWhleF92YWxpZGF0ZV9mdyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuaW5jbHVkZS9saW51eC9paGV4LmgtNzAtICogcnVuIG9mZiB0aGUgZW5kIHdoaWxlIHJlYWRpbmcgcmVjb3Jkcy4uLiAqL1xcbmluY2x1ZGUvbGludXgvaWhleC5oOjcxOnN0YXRpYyBpbmxpbmUgaW50IHJlcXVlc3RfaWhleF9maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdyxcXG5pbmNsdWRlL2xpbnV4L2loZXguaC03Mi1cXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpmd19uYW1lLFxcbi0tXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTYyPXN0YXRpYyBpbnQgemwzOF9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlZ21hcCAqcmVnbWFwKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTc3LVxcdCAqL1xcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jOjE3ODpcXHRlcnIgPSByZXF1ZXN0X2loZXhfZmlybXdhcmUoXFx1MDAyNmZ3LCBcXFwiemwzODA2MC5md1xcXCIsIGRldik7XFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTc5LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjEzLjY0Mzg4NzI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4MzgxNjU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgVnVsbmVyYWJsZSBGaXJtd2FyZSBWYWxpZGF0aW9uKipcblxuT2theSwgc28gdGhlIGByZXF1ZXN0X2loZXhfZmlybXdhcmVgIGZ1bmN0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSXQgY2FsbHMgYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCwgSSBrbm93LCBpcyBzb21ldGhpbmcgU3l6a2FsbGVyIGNhbiBtYW5pcHVsYXRlLiBXZSBjYW4gZmVlZCBpdCBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWVhbnMsIGlmIHRoZXJlJ3MgYSB2dWxuZXJhYmlsaXR5IGluIGBpaGV4X3ZhbGlkYXRlX2Z3YCBhZnRlciBgcmVxdWVzdF9maXJtd2FyZWAsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaXQgd2l0aCBTeXprYWxsZXIuIEV4Y2VsbGVudC4gTm93LCBsZXQncyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgYWN0dWFsbHkgdXNpbmcgdGhpcyBmbG93LiBXZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9ucy5cblxuUmlnaHQsIGxldCdzIGxpc3QgdGhlbSBvdXQ6IGBkcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jYCB1c2VzIGBDT05GSUdfSU5QVVRfSU1TX1BDVWAsIGBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguY2AgLVx1MDAzZSBgQ09ORklHX1RPVUNIU0NSRUVOX0lMSTIxMFhgLCBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2AgLVx1MDAzZSBgQ09ORklHX1VTQl9HU1BDQV9WSUNBTWAsIGBkcml2ZXJzL3VzYi9taXNjL2VtaTI2LmNgIC1cdTAwM2UgYENPTkZJR19VU0JfRU1JMjZgLCBgZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jYCAtXHUwMDNlIGBDT05GSUdfVVNCX0VNSTYyYCwgYGRyaXZlcnMvdXNiL21pc2MvZXp1c2IuY2AgLVx1MDAzZSBgQ09ORklHX1VTQl9FWlVTQmAgKGltcG9ydGFudCwgYmVjYXVzZSBldmVuIGlmIG5vdCBhIG1vZHVsZSBkaXJlY3RseSwgb3RoZXJzIG1heSB1c2UgaXQhKSwgYGRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jYCAtXHUwMDNlIGBDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVGAsIGBkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmNgIC1cdTAwM2UgYENPTkZJR19aSUlSQVZFX1dBVENIRE9HYCwgYW5kIGZpbmFsbHksIGBzb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuY2AgLVx1MDAzZSBgQ09ORklHX1NORF9TT0NfWkwzODA2MGAuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg0MCwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjAuODI3NzA2ODY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ3NjQ1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElOUFVUX0lNU19QQ1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWc9Nzg1PWNvbmZpZyBJTlBVVF9JQk1fUEFORUxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnLTgwMi1cXG5kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZzo4MDM6Y29uZmlnIElOUFVUX0lNU19QQ1VcXG5kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZy04MDQtXFx0dHJpc3RhdGUgXFxcIklNUyBQYXNzZW5nZXIgQ29udHJvbCBVbml0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjIuMzgyNDc2MTU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY1NzEzNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZz00Nzg9Y29uZmlnIFRPVUNIU0NSRUVOX0hZTklUUk9OX0NTVDgxNlhcXG4tLVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZy00ODktXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnOjQ5MDpjb25maWcgVE9VQ0hTQ1JFRU5fSUxJMjEwWFxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZy00OTEtXFx0dHJpc3RhdGUgXFxcIklsaXRlayBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjoyMy45NDgxOTkxMTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU5NjMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HU1BDQV9WSUNBTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9LY29uZmlnPTQxND1jb25maWcgVVNCX0dTUENBX1ZDMDMyWFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZy00MjItXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZzo0MjM6Y29uZmlnIFVTQl9HU1BDQV9WSUNBTVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWctNDI0LVxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjUuNDY0MTg0ODk4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4MjQ4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRU1JMjZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvbWlzYy9LY29uZmlnPTM2PWNvbmZpZyBVU0JfRU1JNjJcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy00OS1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6NTA6Y29uZmlnIFVTQl9FTUkyNlxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy01MS1cXHR0cmlzdGF0ZSBcXFwiRU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjI2Ljk4MjQzODM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2Mjk3MDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0VNSTYyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz03PWNvbmZpZyBVU0JfVVNTNzIwXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMzUtXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjM2OmNvbmZpZyBVU0JfRU1JNjJcXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIkVNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MjguNTQ1NDEyMTgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5MzcwNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTIwNT1jb25maWcgVVNCX1NFUklBTF9JUlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIxNTpjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlVTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozMC4wOTQ3ODU5ODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDkyNTU5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTM1NT1jb25maWcgWElMSU5YX1dJTkRPV19XQVRDSERPR1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MzczOmNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiWm9kaWFjIFJBVkUgV2F0Y2hkb2cgVGltZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjMxLjY0NDA0NTMzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNDc1MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1NPQ19aTDM4MDYwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZz0yNzY1PWNvbmZpZyBTTkRfU09DX1dTQTg4NFhcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0yNzcyLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzoyNzczOmNvbmZpZyBTTkRfU09DX1pMMzgwNjBcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctMjc3NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozMy4xNDg4MDE4OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDgxNjI4OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBFbmFibGluZyBDb25maWdzKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZ3JlZW5saWdodCB0aGVzZSBjb25maWd1cmF0aW9ucyBmb3IgZGVwbG95bWVudCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZSBhbmQgb3BlcmF0aW9uYWwuIFdlJ3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBzeXN0ZW0tbGV2ZWwgY2hhbmdlcyBoZXJlLCBhbmQgYSBtaXNjb25maWd1cmVkIGRlcGVuZGVuY3kgY291bGQgbGVhZCB0byBjYXNjYWRpbmcgZmFpbHVyZXMg4oCTIHNvbWV0aGluZyBJJ2QgbGlrZSB0byBhdm9pZCBhdCBhbGwgY29zdHMsIGVzcGVjaWFsbHkgZHVyaW5nIGEgcHJvZHVjdGlvbiByb2xsb3V0LiBTbywgSSdtIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcHJlcmVxdWlzaXRlIHNlcnZpY2VzLCBsaWJyYXJpZXMsIGFuZCBleHRlcm5hbCByZXNvdXJjZXMgdGhhdCB0aGVzZSBjb25maWdzIHJlbHkgb24uIEknbSBmb2N1c2luZyBub3QganVzdCBvbiB3aGV0aGVyIHRoZXkgKmV4aXN0KiwgYnV0IGFsc28gb24gdGhlaXIgY3VycmVudCBzdGF0ZSDigJMgYXJlIHRoZXkgaGVhbHRoeSwgcGVyZm9ybWluZyBhcyBleHBlY3RlZCwgYW5kIGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkPyBBcmUgdGhlIEFQSSBlbmRwb2ludHMgdGhleSB1c2Ugc3RhYmxlLCB3aXRoIHN1aXRhYmxlIHJhdGUgbGltaXRzLCBhbmQgZG9lcyB0aGUgdW5kZXJseWluZyBpbmZyYXN0cnVjdHVyZSBoYXZlIGVub3VnaCBjYXBhY2l0eSB0byBzdXBwb3J0IGFueSBuZXcgZGVtYW5kcyB0aGVzZSBjb25maWdzIG1pZ2h0IGludHJvZHVjZT8gSSdtIGNyb3NzLXJlZmVyZW5jaW5nIGFueSByZWNlbnQgY2hhbmdlcyB0byBkZXBlbmRlbnQgc3lzdGVtczsgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpbmNvbXBhdGliaWxpdGllcyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGhhdmUgZmxvd24gdW5kZXIgdGhlIHJhZGFyLiBGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYW55IHNlY3VyaXR5IGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGVzZSBjb25maWdzIGhhdmUgYmVlbiBmdWxseSBhZGRyZXNzZWQgYW5kIHRoYXQgYXBwcm9wcmlhdGUgYWNjZXNzIGNvbnRyb2xzIGFyZSBlc3RhYmxpc2hlZC4gTm8gcG9pbnQgaW4gbWFraW5nIGEgZ3JlYXQgZW5oYW5jZW1lbnQgaWYgaXQgZXhwb3NlcyBhIHZ1bG5lcmFiaWxpdHkuIEEgdGhvcm91Z2ggZGVwZW5kZW5jeSBjaGVjayBpcyB0aGUgb25seSB3YXkgdG8gbWluaW1pemUgdGhlIHJpc2tzIGFuZCB2YWxpZGF0ZSB3ZSBjYW4gcHJvY2VlZCBzYWZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjYxLCJPdXRwdXRUb2tlbnMiOjI5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA0MzM3NTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5wdXQvbWlzYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgwMzpcXHRjb25maWcgSU5QVVRfSU1TX1BDVVxcbiA4MDQ6XFx0XFx0dHJpc3RhdGUgXFxcIklNUyBQYXNzZW5nZXIgQ29udHJvbCBVbml0IGRyaXZlclxcXCJcXG4gODA1OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDgwNjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1NcXG4gODA3OlxcdFxcdGhlbHBcXG4gODA4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBzeXN0ZW0gd2l0aCBJTVMgUmF2ZSBQYXNzZW5nZXIgQ29udHJvbCBVbml0LlxcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiA4MTE6XFx0XFx0ICBjYWxsZWQgaW1zX3BjdS5cXG4gODEyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA1Nzc2MTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0OTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0OTA6XFx0Y29uZmlnIFRPVUNIU0NSRUVOX0lMSTIxMFhcXG4gNDkxOlxcdFxcdHRyaXN0YXRlIFxcXCJJbGl0ZWsgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxcXCJcXG4gNDkyOlxcdFxcdGRlcGVuZHMgb24gSTJDXFxuIDQ5MzpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuIDQ5NDpcXHRcXHRoZWxwXFxuIDQ5NTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBJTEkyMTBYIGJhc2VkIHRvdWNoc2NyZWVuXFxuIDQ5NjpcXHRcXHQgIGNvbnRyb2xsZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vZGVscyBJTEkyMTAyLFxcbiA0OTc6XFx0XFx0ICBJTEkyMTAycywgSUxJMjEwMywgSUxJMjEwM3MgYW5kIElMSTIxMDUuXFxuIDQ5ODpcXHRcXHQgIFN1Y2gga2luZCBvZiBjaGlwc2V0cyBjYW4gYmUgZm91bmQgaW4gQW1hem9uIEtpbmRsZSBGaXJlXFxuIDQ5OTpcXHRcXHQgIHRvdWNoc2NyZWVucy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMwNzQ5Njg2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDIzOlxcdGNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cXG4gNDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG4gNDI1OlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWIFxcdTAwMjZcXHUwMDI2IFVTQl9HU1BDQVxcbiA0MjY6XFx0XFx0aGVscFxcbiA0Mjc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxcbiA0Mjg6XFx0XFx0ICAodmljYW0pLlxcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA0MzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3NwY2FfdmljYW0uXFxuIDQzMjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMwODI4OTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRjb25maWcgVVNCX0VNSTI2XFxuICA1MTpcXHRcXHR0cmlzdGF0ZSBcXFwiRU1JIDJ8NiBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgMnw2IGxvdyBsYXRlbmN5IFVTQlxcbiAgNTQ6XFx0XFx0ICBBdWRpbyBpbnRlcmZhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxcbiAgNTc6XFx0XFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxcbiAgNTg6XFx0XFxuICA1OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzA4NzU2NDZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvbWlzYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM2OlxcdGNvbmZpZyBVU0JfRU1JNjJcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJFTUkgNnwybSBVU0IgQXVkaW8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGxvYWRzIGZpcm13YXJlIHRvIEVtYWdpYyBFTUkgNnwybSBsb3cgbGF0ZW5jeSBVU0JcXG4gIDQwOlxcdFxcdCAgQXVkaW8gYW5kIE1pZGkgaW50ZXJmYWNlLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIEFmdGVyIGZpcm13YXJlIGxvYWQgdGhlIGRldmljZSBpcyBoYW5kbGVkIHdpdGggc3RhbmRhcmQgbGludXhcXG4gIDQzOlxcdFxcdCAgVVNCIEF1ZGlvIGRyaXZlci5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBUaGlzIGNvZGUgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjM4LjYzMDkyNzAzNloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdGNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXFxuIDIxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMjE3OlxcdFxcdGhlbHBcXG4gMjE4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgZGV2aWNlcyBmcm9tXFxuIDIxOTpcXHRcXHQgIEluc2lkZSBPdXQgTmV0d29ya3MgKERpZ2kpOlxcbiAyMjA6XFx0XFx0ICBFZGdlcG9ydC80XFxuIDIyMTpcXHRcXHQgIFJhcGlkcG9ydC80XFxuIDIyMjpcXHRcXHQgIEVkZ2Vwb3J0LzR0XFxuIDIyMzpcXHRcXHQgIEVkZ2Vwb3J0LzJcXG4gMjI0OlxcdFxcdCAgRWRnZXBvcnQvNGlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMxMDI5Njc2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3dhdGNoZG9nL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzczLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzczOlxcdGNvbmZpZyBaSUlSQVZFX1dBVENIRE9HXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9kaWFjIFJBVkUgV2F0Y2hkb2cgVGltZXJcXFwiXFxuIDM3NTpcXHRcXHRkZXBlbmRzIG9uIEkyQ1xcbiAzNzY6XFx0XFx0c2VsZWN0IFdBVENIRE9HX0NPUkVcXG4gMzc3OlxcdFxcdGhlbHBcXG4gMzc4OlxcdFxcdCAgV2F0Y2hkb2cgZHJpdmVyIGZvciB0aGUgWm9kaWFjIEFlcm9zcGFjZSBSQVZFIFN3aXRjaCBXYXRjaGRvZ1xcbiAzNzk6XFx0XFx0ICBQcm9jZXNzb3IuXFxuIDM4MDpcXHRcXG4gMzgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDM4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB6aWlyYXZlX3dkdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MjY6MzguNjMxMTk2NDQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvY29kZWNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MzpcXHRjb25maWcgU05EX1NPQ19aTDM4MDYwXFxuMjc3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcbjI3NzU6XFx0XFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXFxuMjc3NjpcXHRcXHRkZXBlbmRzIG9uIEdQSU9MSUJcXG4yNzc3OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4yNzc4OlxcdFxcdGhlbHBcXG4yNzc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXFxuMjc4MDpcXHRcXHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcXG4yNzgxOlxcdFxcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cXG4yNzgyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNjozOC42MzE0NTc3MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyOTc4MjAwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggVmVyaWZpY2F0aW9uIFBsYW4qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhleSdyZSBpbmxpbmUgZnVuY3Rpb25zIHJlc2lkaW5nIGluIGBpbmNsdWRlL2xpbnV4L2loZXguaGAsIG1lYW5pbmcgdGhleSdyZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGVtLiBUaGUgbWFpbiBjaGFsbGVuZ2Ugbm93IGlzIHRvIHZlcmlmeSB0aGlzIGZpeCBieSBlbnN1cmluZyB0aGUgcmVsZXZhbnQgY29kZSBnZXRzIGNvbXBpbGVkIGFuZCBpcywgaWRlYWxseSwgZnV6emVkLlxuXG5Jbml0aWFsbHksIEkgY29uc2lkZXJlZCBlbmFibGluZyBhIGJyb2FkZXIgc2V0IG9mIGRyaXZlcnMuIEkgaGFkIGxpc3RlZCBgSU5QVVRfSU1TX1BDVWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgLCBgWklJUkFWRV9XQVRDSERPR2AsIGFuZCBgU05EX1NPQ19aTDM4MDYwYC4gSG93ZXZlciwgYSBxdWljayByZXZpZXcgb2YgZGVwZW5kZW5jaWVzIHJldmVhbHMgYSBmZXcgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMuIGBVU0JfR1NQQ0FfVklDQU1gIG5lZWRzIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4gYElOUFVUX0lNU19QQ1VgIHJlbGllcyBvbiBgVVNCYCBhbmQgYExFRFNfQ0xBU1NgLiBCb3RoIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCBhbmQgYFpJSVJBVkVfV0FUQ0hET0dgIGRlcGVuZCBvbiBgSTJDYC4gQW5kIGZpbmFsbHksIGBTTkRfU09DX1pMMzgwNjBgIG5lZWRzIGBTUElfTUFTVEVSYCBhbmQgYEdQSU9MSUJgLlxuXG5HaXZlbiB0aGVzZSBkZXBlbmRlbmNpZXMsIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBwYXRoIGlzIHRvIGZvY3VzIG9uIFVTQiBkcml2ZXJzIGZvciBub3cuIFRoZXkgY2FuIGJlIHJlbGF0aXZlbHkgZWFzaWx5IGZ1enplZCB1c2luZyBgZHVtbXlfaGNkYC4gVGhlcmVmb3JlLCBJJ2xsIHByaW9yaXRpemUgZW5hYmxpbmcgYFVTQl9FTUkyNmAsIGBVU0JfRU1JNjJgLCBgVVNCX1NFUklBTF9FREdFUE9SVGAsIGFuZCBgSU5QVVRfSU1TX1BDVWAuXG5cbkFkZGl0aW9uYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIHVzYWdlIG9mIGBVU0JfRVpVU0JgIGJlY2F1c2UgaXQncyB1c2VkIGJ5IGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAuIEl0J3Mgd29ydGggYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhleSdyZSBwcm9wZXJseSBoYW5kbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUxNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSIsInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI2OjU4LjkyOTI4MDg0NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0NjUwNjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0VaVVNCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz0yNjU9Y29uZmlnIFVTQl9ZVVJFWFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3Ni1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6Mjc3OmNvbmZpZyBVU0JfRVpVU0JfRlgyXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTI3OC1cXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb25zIGZvciBsb2FkaW5nIGZpcm13YXJlIG9uIEVaVVNCIGNoaXBzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzowMC40NzU3OTQ0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODAyMDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnPTI5MT1jb25maWcgVVNCX1NFUklBTF9JVVVcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDItXFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMxMjpjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzEzLVxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBVU0EteHh4IFNlcmlhbCBEcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjAyLjA2MzgyMjI4NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY0NjMyODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOlxuXG4qKkV4YW1pbmluZyB0aGUgRVotVVNCIERyaXZlciBDb21waWxhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIFVTQiBkcml2ZXIsIGBlenVzYi5jYCwgaXMgZ2V0dGluZyBjb21waWxlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIFRoZSBmaWxlIHBhdGggaXMgYGRyaXZlcnMvdXNiL21pc2MvZXp1c2IuY2AsIHdoaWNoIHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZHJpdmVyLCBub3QgZGVlcGx5IG5lc3RlZCB3aXRoaW4gc29tZSBlbGFib3JhdGUgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhhdCBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBpdHNlbGYgaXMgaGVscGZ1bCwgYnV0IGZpcnN0IEkgbmVlZCB0byBzZWUgKmhvdyogdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0LiBUaGUgcmlnaHQgcGxhY2UgdG8gYmVnaW4gd2l0aCB0aGlzIHF1ZXN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGlzIHByb2JhYmx5IHRoZSBzb3VyY2UgdHJlZSwgSSdsbCBnbyBoYXZlIGEgbG9vayBpbiB0aGF0IGZpbGUuIEkgY2FuIGdldCBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGJ1aWxkIGlzIGJlaW5nIG9yY2hlc3RyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MDUuMDI4NDU5MTRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mjk5NDUwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXp1c2Iub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfRU1JNjIpXFx0XFx0XFx0Kz0gZW1pNjIub1xcbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9FWlVTQl9GWDIpXFx0XFx0Kz0gZXp1c2Iub1xcbmRyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0FQUExFX01GSV9GQVNUQ0hBUkdFKVxcdCs9IGFwcGxlLW1maS1mYXN0Y2hhcmdlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MDcuNjU4NDE0ODM5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Njk2MDc4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVVNCLUJhc2VkIEhhcmR3YXJlIGZvciBJbWFnaW5nIGFuZCBTZXJpYWwgQ29tbXVuaWNhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgYENPTkZJR19VU0JfRVpVU0JfRlgyYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBtYXAgb3V0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBmb3IgYSBzeXN0ZW0gdXRpbGl6aW5nIHRoaXMgY2hpcC4gRmlyc3QsIEknbSB0aGlua2luZywgXCJMZXQncyBsaXN0IHRob3NlIGNvbmZpZ3Mgd2Uga25vdyB3ZSBuZWVkIHRvIGVuYWJsZSwgaW5jbHVkaW5nIHRoZSBgSU5QVVRfSU1TX1BDVWAsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgIGRyaXZlcnMsIGFuZCBvZiBjb3Vyc2UgYFVTQl9FWlVTQl9GWDJgLlwiXG5cbk5leHQsIG15IG1lbnRhbCBjaGVja2xpc3QgbW92ZXMgdG8gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbnkgdW5kZXJseWluZyByZXF1aXJlbWVudHMgdGhhdCB0aGUgYFVTQl9FWlVTQl9GWDJgIGRyaXZlciBtaWdodCBoYXZlLiBUaW1lIHRvIGludmVzdGlnYXRlIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBwcm9wZXIgZnVuY3Rpb25hbGl0eSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoxMS4yMjgwMjU2MzVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzc6XFx0Y29uZmlnIFVTQl9FWlVTQl9GWDJcXG4gMjc4OlxcdFxcdHRyaXN0YXRlIFxcXCJGdW5jdGlvbnMgZm9yIGxvYWRpbmcgZmlybXdhcmUgb24gRVpVU0IgY2hpcHNcXFwiXFxuIDI3OTpcXHRcXHRoZWxwXFxuIDI4MDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IG5lZWQgRVpVU0IgZGV2aWNlIHN1cHBvcnQuXFxuIDI4MTpcXHRcXHQgIChDeXByZXNzIEZYL0ZYMi9GWDJMUCBtaWNyb2NvbnRyb2xsZXJzKVxcbiAyODI6XFx0XFxuIDI4MzpcXHRjb25maWcgVVNCX0hVQl9VU0IyNTFYQlxcbiAyODQ6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQjI1MVhCIEh1YiBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24gRHJpdmVyXFxcIlxcbiAyODU6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gMjg2OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MTEuMjI4MTI3Njc1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzA3ODQ3NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2stSW4qKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBgVVNCX0VaVVNCX0ZYMmAg4oCTIG5vcGUsIGNsZWFuLiBObyBleHRlcm5hbCBsaWJyYXJ5IGhvb2tzIG9yIHRyaWNreSBidWlsZCBmbGFncyB0byB3b3JyeSBhYm91dCB0aGVyZS4gQWx3YXlzIGEgZ29vZCBzaWduLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSAqbWVhdCogb2YgaXQ6IGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgdGVuZCB0byBnZXQgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBhIGJpdCB0YW5nbGVkLiBHb3R0YSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIExldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gRGlnZ2luZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM4MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MTQuMTk4OTE0ODc5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTU6XFx0Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRcXG4gMjE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbiAyMTc6XFx0XFx0aGVscFxcbiAyMTg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBkZXZpY2VzIGZyb21cXG4gMjE5OlxcdFxcdCAgSW5zaWRlIE91dCBOZXR3b3JrcyAoRGlnaSk6XFxuIDIyMDpcXHRcXHQgIEVkZ2Vwb3J0LzRcXG4gMjIxOlxcdFxcdCAgUmFwaWRwb3J0LzRcXG4gMjIyOlxcdFxcdCAgRWRnZXBvcnQvNHRcXG4gMjIzOlxcdFxcdCAgRWRnZXBvcnQvMlxcbiAyMjQ6XFx0XFx0ICBFZGdlcG9ydC80aVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoxNC4xOTkwMjQxMjlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjQ0NTMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGV2aWNlIERyaXZlciBEZXBlbmRlbmN5IENoZWNrKipcblxuUmlnaHQsIGxldCdzIHNlZS4gRmlyc3QsIGdvb2QsIG5vIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgZm9yIGBVU0JfU0VSSUFMX0VER0VQT1JUYC4gVGhhdCdzIGEgY2xlYW4gc2xhdGUsIGFsd2F5cyBhIG5pY2Ugc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHNoaWZ0IG15IGZvY3VzIHRvIHRob3NlIHJlbGF0ZWQgRU1JIGRldmljZXMgLSBgVVNCX0VNSTI2YCBhbmQgYFVTQl9FTUk2MmAuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYFVTQl9TRVJJQUxfRURHRVBPUlRgIGlzbid0IGluYWR2ZXJ0ZW50bHkgcmVsaWFudCBvbiBzb21lIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBzdHJ1Y3R1cmVzIHByb3ZpZGVkIGJ5IGVpdGhlciBvZiB0aG9zZS4gTmVlZCB0byBxdWlja2x5IHNlZSBpZiB0aGVyZSdzIGFueSBzaGFyZWQgY29kZSBvciBjb21tb24gZWxlbWVudHMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgc2hvdWxkIGFsc28gdGhpbmsgYWJvdXQgd2hldGhlciB0aGV5J3JlIGxpa2VseSB0byBoYXZlIGFueSBraW5kIG9mIHNoYXJlZCBpbnRlcnJ1cHQgc3RydWN0dXJlIG9yIHJlc291cmNlIGFsbG9jYXRpb24uIEdvaW5nIHRvIGRpZyBpbnRvIHRob3NlIG1vZHVsZXMgbmV4dCwgYW5kIGNyb3NzLXJlZmVyZW5jZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjE3Ljc1NTQ3MTQ3NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9taXNjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzY6XFx0Y29uZmlnIFVTQl9FTUk2MlxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIkVNSSA2fDJtIFVTQiBBdWRpbyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgVGhpcyBkcml2ZXIgbG9hZHMgZmlybXdhcmUgdG8gRW1hZ2ljIEVNSSA2fDJtIGxvdyBsYXRlbmN5IFVTQlxcbiAgNDA6XFx0XFx0ICBBdWRpbyBhbmQgTWlkaSBpbnRlcmZhY2UuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgQWZ0ZXIgZmlybXdhcmUgbG9hZCB0aGUgZGV2aWNlIGlzIGhhbmRsZWQgd2l0aCBzdGFuZGFyZCBsaW51eFxcbiAgNDM6XFx0XFx0ICBVU0IgQXVkaW8gZHJpdmVyLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIFRoaXMgY29kZSBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaCBjYW4gYmVcXG4gIDQ2OlxcdFxcdCAgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91IHdhbnQpLlxcbiAgNDc6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGF1ZGlvLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGFzIGFcXG4gIDQ4OlxcdFxcdCAgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XFx1MDAzZS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0Y29uZmlnIFVTQl9FTUkyNlxcbiAgNTE6XFx0XFx0dHJpc3RhdGUgXFxcIkVNSSAyfDYgVVNCIEF1ZGlvIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGRyaXZlciBsb2FkcyBmaXJtd2FyZSB0byBFbWFnaWMgRU1JIDJ8NiBsb3cgbGF0ZW5jeSBVU0JcXG4gIDU0OlxcdFxcdCAgQXVkaW8gaW50ZXJmYWNlLlxcbiAgNTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjE3Ljc1NTU1MjY2NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA1NTIzMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgcHJvY2Vzc2luZzpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGluIFByb2dyZXNzKipcblxuQWxyaWdodCwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFzc2Vzc21lbnQuIEkgc2VlIG5vIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBmb3IgYFVTQl9FTUkyNmAgb3IgYFVTQl9FTUk2MmAsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbGlrZWx5IHNpbXBsaWZpZXMgdGhpbmdzLCBhdCBsZWFzdCBvbiB0aGUgc3VyZmFjZS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uIHRvIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHJldmlldyB0aGUgYXJjaGl0ZWN0dXJlIGRvY3VtZW50cyB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbiB0aGVyZSBhcmUgbm8gaW1wbGljaXQgb3IgaW5kaXJlY3QgcmVsYXRpb25zaGlwcyBJJ20gbWlzc2luZy4gR290IHRvIGJlIHRob3JvdWdoIGhlcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgcGl2b3QgYW5kIGV4YW1pbmUgdGhlIGBJTlBVVF9JTVNfUENVYCBjb21wb25lbnQuIEl0IGNvdWxkIGhhdmUgY29ubmVjdGlvbnMgSSdtIG5vdCBzZWVpbmcgeWV0LiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBpcyBjcml0aWNhbCB0byBlbnN1cmluZyBzbW9vdGggaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MjgxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoyMi41NjEwNzg4N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODAzOlxcdGNvbmZpZyBJTlBVVF9JTVNfUENVXFxuIDgwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiSU1TIFBhc3NlbmdlciBDb250cm9sIFVuaXQgZHJpdmVyXFxcIlxcbiA4MDU6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gODA2OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTU1xcbiA4MDc6XFx0XFx0aGVscFxcbiA4MDg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIHN5c3RlbSB3aXRoIElNUyBSYXZlIFBhc3NlbmdlciBDb250cm9sIFVuaXQuXFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuIDgxMTpcXHRcXHQgIGNhbGxlZCBpbXNfcGN1LlxcbiA4MTI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjIyLjU2MTI2MjI3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTE0NTExNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHR3byBrZXkgY29tcG9uZW50czogdGhlIGBVU0JgIHNldHRpbmcgYW5kIHRoZSBgTEVEU19DTEFTU2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaW50dWl0aW9uIG9uIHRoaXMsIGFuZCBgTEVEU19DTEFTU2AgaXMgKnVzdWFsbHkqIGVuYWJsZWQgYnkgZGVmYXVsdC4gU3RpbGwsIGl0J3Mgd29ydGggZG91YmxlLWNoZWNraW5nIHRvIGNvbmZpcm0gdGhhdCdzIHRoZSBjYXNlIGluIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gV2UncmUgZ29pbmcgdG8gdHJlYXQgaXQgYXMgYW4gaW5jbHVzaW9uIGVpdGhlciB3YXkuIE5vdywgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBVU0JfR1NQQ0FfVklDQU1gLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgY3J1eCBvZiB0aGlzIGxpZXMuIExldCdzIGRlbHZlIGluIGFuZCBzZWUgd2hhdCB0aGF0J3MgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njc2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzoyNS41NTI3MTY2NjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDIzOlxcdGNvbmZpZyBVU0JfR1NQQ0FfVklDQU1cXG4gNDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaUNhbSBVU0IgQ2FtZXJhIERyaXZlclxcXCJcXG4gNDI1OlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWIFxcdTAwMjZcXHUwMDI2IFVTQl9HU1BDQVxcbiA0MjY6XFx0XFx0aGVscFxcbiA0Mjc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSAzY29tIGhvbWVjb25uZWN0IGNhbWVyYVxcbiA0Mjg6XFx0XFx0ICAodmljYW0pLlxcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA0MzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3NwY2FfdmljYW0uXFxuIDQzMjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MjUuNTUyODE5MDg0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTY1MTcxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZyBpcyBzdHJvbmdseSBjb250aW5nZW50IG9uIGEgZmV3IHNwZWNpZmljIGZhY3RvcnMuIEZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC4gVGhlc2UgYXJlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyB3aGVuIGNvbnNpZGVyaW5nIHZpZGVvIGlucHV0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkIHZpZGVvIGRldmljZSBhbmQgaWYgdGhlIFVTQiBnc3BjYSBkcml2ZXJzIGFyZSBjb3JyZWN0bHkgY29uZmlndXJlZC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgbGV2ZWwgY2hlY2suXG5cblRoZW4sIHNpbmNlIHRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUga2luZCBvZiBkaXNwbGF5IGludGVyYWN0aW9uLCBJJ2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgaW52ZXN0aWdhdGUgYFRPVUNIU0NSRUVOX0lMSTIxMFhgLiBJdCdzIGNydWNpYWwgdG8gY29uZmlybSBpZiB0aGF0J3MgZW5hYmxlZCBhbmQgZnVuY3Rpb25pbmcgY29ycmVjdGx5LiBUaGlzIGxpa2VseSBoYXMgYSBkaXJlY3QgaW1wYWN0IG9uIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwNzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjI4Ljc2OTM1MjQ3NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDkwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDkwOlxcdGNvbmZpZyBUT1VDSFNDUkVFTl9JTEkyMTBYXFxuIDQ5MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSWxpdGVrIElMSTIxMFggYmFzZWQgdG91Y2hzY3JlZW5cXFwiXFxuIDQ5MjpcXHRcXHRkZXBlbmRzIG9uIEkyQ1xcbiA0OTM6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiA0OTQ6XFx0XFx0aGVscFxcbiA0OTU6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgSUxJMjEwWCBiYXNlZCB0b3VjaHNjcmVlblxcbiA0OTY6XFx0XFx0ICBjb250cm9sbGVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb2RlbHMgSUxJMjEwMixcXG4gNDk3OlxcdFxcdCAgSUxJMjEwMnMsIElMSTIxMDMsIElMSTIxMDNzIGFuZCBJTEkyMTA1LlxcbiA0OTg6XFx0XFx0ICBTdWNoIGtpbmQgb2YgY2hpcHNldHMgY2FuIGJlIGZvdW5kIGluIEFtYXpvbiBLaW5kbGUgRmlyZVxcbiA0OTk6XFx0XFx0ICB0b3VjaHNjcmVlbnMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI3OjI4Ljc2OTQ0NjcxNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTcyMzM4MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgaGluZ2VzIG9uIHRoZSBgSTJDYCBidXMsIHRoYXQncyB0aGUgY29yZS4gQmVmb3JlIEkgZGlnIGFueSBkZWVwZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIEkyQyBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBOb3csIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYFpJSVJBVkVfV0FUQ0hET0dgIGlzIGludGVyYWN0aW5nLiBMZXQncyBzdGFydCB3aXRoIHRoYXQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozMS4zNDE3ODg3MzZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNzMsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNzM6XFx0Y29uZmlnIFpJSVJBVkVfV0FUQ0hET0dcXG4gMzc0OlxcdFxcdHRyaXN0YXRlIFxcXCJab2RpYWMgUkFWRSBXYXRjaGRvZyBUaW1lclxcXCJcXG4gMzc1OlxcdFxcdGRlcGVuZHMgb24gSTJDXFxuIDM3NjpcXHRcXHRzZWxlY3QgV0FUQ0hET0dfQ09SRVxcbiAzNzc6XFx0XFx0aGVscFxcbiAzNzg6XFx0XFx0ICBXYXRjaGRvZyBkcml2ZXIgZm9yIHRoZSBab2RpYWMgQWVyb3NwYWNlIFJBVkUgU3dpdGNoIFdhdGNoZG9nXFxuIDM3OTpcXHRcXHQgIFByb2Nlc3Nvci5cXG4gMzgwOlxcdFxcbiAzODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMzgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHppaXJhdmVfd2R0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozMS4zNDE5NTI1ODZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4NjEyOTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSTJDIERlcGVuZGVudCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgb24gYEkyQ2AuIFRoYXQncyB0aGUgZ2F0ZXdheSBoZXJlLiBFdmVyeXRoaW5nIGhpbmdlcyBvbiB0aGF0IHByb3RvY29sLCBzbyBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZSBmaXJzdC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcyBob3cgYEkyQ2AgaXMgYmVpbmcgbGV2ZXJhZ2VkLlxuXG5UaGF0IG5hdHVyYWxseSBsZWFkcyBtZSB0byB0aGluayBhYm91dCBgU05EX1NPQ19aTDM4MDYwYC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlciBob3cgdGhhdCByZWxhdGVzIHRvIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhhdCBzcGVjaWZpYyBtb2R1bGUgbm93LiBNeSB0aG91Z2h0cyBub3cgYXJlIGZvY3VzZWQgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJjb25uZWN0aW9uIHdpdGggdGhlIGF1ZGlvIGNvZGVjIGFuZCB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdhdGhlciBmcm9tIGBTTkRfU09DX1pMMzgwNjBgLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBhcmVhIHRvIGFzc2VzcyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6MzQuMjI4MDg1MDkxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvY29kZWNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MzpcXHRjb25maWcgU05EX1NPQ19aTDM4MDYwXFxuMjc3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFpMMzgwNjAgQ29ubmVjdGVkIEhvbWUgQXVkaW8gUHJvY2Vzc29yXFxcIlxcbjI3NzU6XFx0XFx0ZGVwZW5kcyBvbiBTUElfTUFTVEVSXFxuMjc3NjpcXHRcXHRkZXBlbmRzIG9uIEdQSU9MSUJcXG4yNzc3OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4yNzc4OlxcdFxcdGhlbHBcXG4yNzc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgWkwzODA2MCBDb25uZWN0ZWQgSG9tZSBBdWRpbyBQcm9jZXNzb3IgZnJvbSBNaWNyb3NlbWksXFxuMjc4MDpcXHRcXHQgIHdoaWNoIGNvbnNpc3RzIG9mIGEgRGlnaXRhbCBTaWduYWwgUHJvY2Vzc29yIChEU1ApLCBzZXZlcmFsIERpZ2l0YWxcXG4yNzgxOlxcdFxcdCAgQXVkaW8gSW50ZXJmYWNlcyAoREFJcyksIGFuYWxvZyBvdXRwdXRzLCBhbmQgYSBibG9jayBvZiAxNCBHUElPcy5cXG4yNzgyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyNzozNC4yMjgyMzIxODFaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMDc5OTE1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgY29uZmlndXJhdGlvbiBoZXJlIGhpbmdlcyBvbiB0aGUgYFNQSV9NQVNURVJgIGFuZCBgR1BJT0xJQmAgZGVwZW5kZW5jaWVzLiBUaG9zZSBhcmUgZm91bmRhdGlvbmFsLCBzbyB0aGV5J3JlIGluIHBsYWNlLiBOb3csIEknbSBsb29raW5nIGF0IFVTQiBkcml2ZXJzIHRoYXQgcmVseSBvbiBpaGV4IGZpcm13YXJlLiBJJ2xsIGVuYWJsZSBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9FWlVTQl9GWDJgLCBgSU5QVVRfSU1TX1BDVWAsIGFuZCBgTEVEU19DTEFTU2AuIFRoZXNlIGFyZSBjb21tb24gdGFyZ2V0cyBmb3IgdGhpcyBjb25maWd1cmF0aW9uLlxuXG5XYWl0IGEgc2Vjb25kLCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgVVNCX0VaVVNCX0ZYMmAtLXRoYXQncyBub3QgYSBkcml2ZXIsIGl0J3MgYSBsaWJyYXJ5LiBXaGljaCBtZWFucyBpdCBpcyB1c2VkIGJ5IG90aGVyIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBlbnRpcmUgc3RhY2sgYW5kIHRoYXQgSSBnZXQgaXQgcmlnaHQuIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBVU0JfU0VSSUFMX0tFWVNQQU5gIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWAgc2luY2UgdGhleSB1c2UgdGhlIGBVU0JfRVpVU0JfRlgyYCBsaWJyYXJ5LiBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6NDUuMzM2MjI2MTMxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDE6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG4gMzAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMzAzOlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMwNDpcXHRcXHRoZWxwXFxuIDMwNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGEgS2V5c3BhbiBQREEsIFhpcmNvbSBvciBFbnRyZWdhIHNpbmdsZVxcbiAzMDY6XFx0XFx0ICBwb3J0IFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS4gVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mXFxuIDMwNzpcXHRcXHQgIGZpcm13YXJlIGRldmVsb3BlZCBmcm9tIHNjcmF0Y2ggYnkgQnJpYW4gV2FybmVyLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzMTA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXFxuIDMxMTpcXHRcXG4gMzEyOlxcdGNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBVU0EteHh4IFNlcmlhbCBEcml2ZXJcXFwiXFxuIDMxNDpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBLZXlzcGFuIFVTQiB0byBzZXJpYWwgY29udmVydGVyXFxuIDMxNzpcXHRcXHQgIGRldmljZXMuICBUaGlzIGRyaXZlciBtYWtlcyB1c2Ugb2YgS2V5c3BhbidzIG9mZmljaWFsIGZpcm13YXJlXFxuIDMxODpcXHRcXHQgIGFuZCB3YXMgZGV2ZWxvcGVkIHdpdGggdGhlaXIgc3VwcG9ydC4gIFlvdSBtdXN0IGFsc28gaW5jbHVkZVxcbiAzMTk6XFx0XFx0ICBmaXJtd2FyZSB0byBzdXBwb3J0IHlvdXIgcGFydGljdWxhciBkZXZpY2UocykuXFxuIDMyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjc6NDUuMzM2NDE0NjkxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NzAwNTUwOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgIGFuZCBgVVNCX1NFUklBTF9LRVlTUEFOYCBkcml2ZXJzIGFyZSByZWxhdGVkIHRvIHRoZSBgVVNCX0VaVVNCX0ZYMmAgZGV2aWNlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCdzIG5haWwgZG93biB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuXG5cblRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYC4gR2l2ZW4gdGhhdCB0aGV5J3JlIGlubGluZSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5ICpjYWxsKiB0aG9zZS4gIEkndmUgZ290IGEgbGlzdCBoZXJlOiBgaW1zX3BjdV9wcm9jZXNzX2FzeW5jX2Zpcm13YXJlYCwgYGltc19wY3VfY291bnRfZndfcmVjb3Jkc2AsIGBpbXNfcGN1X2ZsYXNoX2Zpcm13YXJlYCwgYGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyYCwgYHNkX2luaXRgIChpbiB2aWNhbS5jKSwgYGVtaTI2X2xvYWRfZmlybXdhcmVgLCBgZW1pNjJfbG9hZF9maXJtd2FyZWAsIGBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCwgYHVwZGF0ZV9lZGdlcG9ydF9FMlBST01gLCBgbG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZWAsIGB6aWlyYXZlX2Zpcm1fdmVyaWZ5YCwgYHppaXJhdmVfZmlybV91cGxvYWRgLCBhbmQgYHpsMzhfbG9hZF9maXJtd2FyZWAuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIE15IGlkZWFsIGZ1enppbmcgdGFyZ2V0cyBhcmUgZ29pbmcgdG8gYmUgdGhvc2Ugbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF0J3MgaG93IEknbGwgbWF4aW1pemUgdGhlIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIHZ1bG5lcmFiaWxpdGllcyBmcm9tIGV4dGVybmFsIGlucHV0LiBTbywgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRocm91Z2ggdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB0aG9zZSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTU2LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjA0LjAzNjk2OTI4M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5OTQ1ODExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbXNfcGN1X3Byb2Nlc3NfYXN5bmNfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz05NDA9c3RhdGljIGludCBpbXNfcGN1X2hhbmRsZV9maXJtd2FyZV91cGRhdGUoc3RydWN0IGltc19wY3UgKnBjdSxcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtOTY2LVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM6OTY3OnN0YXRpYyB2b2lkIGltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKl9mdyxcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jLTk2OC1cXHRcXHRcXHRcXHRcXHQgICB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYz0yMDUzPXN0YXRpYyBpbnQgaW1zX3BjdV9pbml0X2Jvb3Rsb2FkZXJfbW9kZShzdHJ1Y3QgaW1zX3BjdSAqcGN1KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgxLVxcdFxcdFxcdFxcdFxcdHBjdS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBwY3UsXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYzoyMDgyOlxcdFxcdFxcdFxcdFxcdGltc19wY3VfcHJvY2Vzc19hc3luY19maXJtd2FyZSk7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMDgzLVxcdGlmIChlcnJvcikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODowNi4zMzY0MzQ5OThaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjE5Mjg4NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pMjZfbG9hZF9maXJtd2FyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MzI9c3RhdGljIGludCBlbWkyNl9zZXRfcmVzZXQoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciByZXNldF9iaXQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYzozMzpzdGF0aWMgaW50IGVtaTI2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0zNC1zdGF0aWMgaW50IGVtaTI2X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jPTU3PXN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy03MC1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM6NzE6c3RhdGljIGludCBlbWkyNl9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy03Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmM9MjI2PXN0YXRpYyBpbnQgZW1pMjZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pMjYuYy0yMzEtXFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jOjIzMjpcXHRlbWkyNl9sb2FkX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jLTIzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MDguNjk4MzY4MTkyWiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgxMzI1MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaTYyX2xvYWRfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTQxPXN0YXRpYyBpbnQgZW1pNjJfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmM6NDI6c3RhdGljIGludCBlbWk2Ml9sb2FkX2Zpcm13YXJlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNDMtc3RhdGljIGludCBlbWk2Ml9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYz02Nj1zdGF0aWMgaW50IGVtaTYyX3NldF9yZXNldCAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciByZXNldF9iaXQpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtNzgtXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jOjc5OnN0YXRpYyBpbnQgZW1pNjJfbG9hZF9maXJtd2FyZSAoc3RydWN0IHVzYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtODAte1xcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jPTIzOD1zdGF0aWMgaW50IGVtaTYyX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMtMjQ0LVxcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYzoyNDU6XFx0ZW1pNjJfbG9hZF9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvdXNiL21pc2MvZW1pNjIuYy0yNDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjExLjE3OTY5NzU3NFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMTM4MDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz01Nj1FWFBPUlRfU1lNQk9MX0dQTChlenVzYl9meDFfc2V0X3Jlc2V0KTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtNTctXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjU4OnN0YXRpYyBpbnQgZXp1c2JfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy01OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXp1c2JfZnhfdHlwZSBmeCxcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xMjA9aW50IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTIyLXtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTIzOlxcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngxLCBmaXJtd2FyZV9wYXRoKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYz0xNDM9aW50IGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ1LXtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTQ2OlxcdHJldHVybiBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKGRldiwgZXp1c2JfZngyLCBmaXJtd2FyZV9wYXRoKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MTMuNjgxMDgxNjg1WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU4NTQxNDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9lZGdlcG9ydF9FMlBST01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9Mjk0PXN0YXRpYyBpbnQgcm9tX3dyaXRlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsIF9fdTE2IGV4dEFkZHIsIF9fdTE2IGFkZHIsXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMDMtICpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQqXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzA0OiAqIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oKVxcdENvbXBhcmUgY3VycmVudCB2ZXJzaW9ucyBvZlxcdFxcdCpcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0zMDUtICpcXHRcXHRcXHRcXHRCb290IFJPTSBhbmQgTWFudWZhY3R1cmUgXFx0XFx0Klxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzA5LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MzEwOnN0YXRpYyB2b2lkIHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCAqZWRnZV9zZXJpYWwpXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI3MDQ9c3RhdGljIGludCBlZGdlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzQtXFx0XFx0LyogQ2hlY2sgY3VycmVudCBFZGdlcG9ydCBFRVBST00gYW5kIHVwZGF0ZSBpZiBuZWNlc3NhcnkgKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNzc1OlxcdFxcdHVwZGF0ZV9lZGdlcG9ydF9FMlBST00oZWRnZV9zZXJpYWwpO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI3NzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjE2LjEzOTYyODUxN1oiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0ODQ4NDU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb2FkX2FwcGxpY2F0aW9uX2Zpcm13YXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jPTI1ODc9c3RhdGljIHZvaWQgZ2V0X2Jvb3RfZGVzYyhzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjMtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzoyNjI0OiAqIGxvYWRfYXBwbGljYXRpb25fZmlybXdhcmVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYy0yNjI1LSAqXFx0VGhpcyBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgdG8gdGhlIGRldmljZVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2MjYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM6MjYyNzpzdGF0aWMgdm9pZCBsb2FkX2FwcGxpY2F0aW9uX2Zpcm13YXJlKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsKVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jLTI2Mjgte1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmM9MjcwND1zdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjc2OS1cXHRcXHQvKiBub3cgbG9hZCB0aGUgYXBwbGljYXRpb24gZmlybXdhcmUgaW50byB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jOjI3NzA6XFx0XFx0bG9hZF9hcHBsaWNhdGlvbl9maXJtd2FyZShlZGdlX3NlcmlhbCk7XFxuZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMtMjc3MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjg6MTguNDg4MTIwOTkxWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTgzNzU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBEZXZpY2UgRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucy4gV2UndmUgZ290IGEgdmFyaWV0eSBvZiB0aGVtIGhlcmUsIHNlZW1pbmdseSBzcGFubmluZyBkaWZmZXJlbnQgVVNCIGRldmljZSBjbGFzc2VzLiBGaXJzdCwgSSBzZWUgYGVtaTI2X3Byb2JlYCBhbmQgYGVtaTYyX3Byb2JlYCBpbiB0aGUgYGVtaTI2LmNgIGFuZCBgZW1pNjIuY2AgZHJpdmVycywgcmVzcGVjdGl2ZWx5LCB3aGljaCBsaWtlbHkgaGFuZGxlIHNvbWUgY3VzdG9tIEVNSSBkZXZpY2VzLiBUaGVuLCB3ZSBoYXZlIHRoZSBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGFuZCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgIGZ1bmN0aW9ucyBpbiBgZXp1c2IuY2AuIEdpdmVuIHRoZWlyIG5hbWVzLCB0aG9zZSBhcmUgZmlybXdhcmUgZG93bmxvYWQgcm91dGluZXMgZm9yIEN5cHJlc3MgRVotVVNCIEZYMSBhbmQgRlgyIGRldmljZXMsIHByb2JhYmx5IGNydWNpYWwgZm9yIGJyaW5naW5nIHVwIGRldmljZXMgdXNpbmcgdGhvc2UgY2hpcHMuXG5cbk5leHQgdXAsIGBlZGdlX3N0YXJ0dXBgIGluIHRoZSBgaW9fZWRnZXBvcnQuY2AgZmlsZSBoYXMgY2F1Z2h0IG15IGV5ZSAtIHRoaXMgc2VlbXMgcmVsYXRlZCB0byBpbml0aWFsaXphdGlvbiBvciBhIGRldmljZS1zcGVjaWZpYyBzdGFydHVwIHJvdXRpbmUgd2l0aGluIHRoZSBFZGdlcG9ydCBzZXJpYWwgZHJpdmVyLiBGaW5hbGx5LCB0aGVyZSdzIGBpbXNfcGN1X2luaXRfYm9vdGxvYWRlcl9tb2RlYCBhbmQgaXRzIHBhcmVudCBgaW1zX3BjdV9wcm9iZWAgaW4gYGltcy1wY3UuY2AuIFNpbmNlIGBpbXNfcGN1X2luaXRfYm9vdGxvYWRlcl9tb2RlYCBpcyBjYWxsZWQgYnkgYGltc19wY3VfcHJvYmVgLCBJIGtub3cgdGhhdCBgaW1zX3BjdV9wcm9iZWAgaGFzIHRvIGJlIHRoZSBlbnRyeSBwb2ludCB0byBpbnZlc3RpZ2F0ZS4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIGhvdyBgaW1zX3BjdV9wcm9iZWAgZnVuY3Rpb25zLCB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYm9vdGxvYWRlciBtb2RlIGluaXRpYWxpemF0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIHRoYXQgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc4MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjIzLjA0NjQ5OTc5MVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1ODMyNjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbXNfcGN1X3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM9MjEwMD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgaW1zX3BjdV9kcml2ZXI7XFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAxLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmM6MjEwMjpzdGF0aWMgaW50IGltc19wY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMTAzLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jPTIyNDQ9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGltc19wY3VfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9pbnB1dC9taXNjL2ltcy1wY3UuYy0yMjQ3LVxcdC5kZXZfZ3JvdXBzXFx0XFx0PSBpbXNfcGN1X3N5c2ZzX2dyb3VwcyxcXG5kcml2ZXJzL2lucHV0L21pc2MvaW1zLXBjdS5jOjIyNDg6XFx0LnByb2JlXFx0XFx0XFx0PSBpbXNfcGN1X3Byb2JlLFxcbmRyaXZlcnMvaW5wdXQvbWlzYy9pbXMtcGN1LmMtMjI0OS1cXHQuZGlzY29ubmVjdFxcdFxcdD0gaW1zX3BjdV9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODoyNS40MDQ4MzE2MzVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTMwMTUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IG1lbnRhbCBydW5kb3duOlxuXG4qKklkZW50aWZ5aW5nIEtleSBFbnRyeSBQb2ludHMgXHUwMDI2IERlcGVuZGVuY3kgQW5hbHlzaXMqKlxuXG5SaWdodCwgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgd2UgbmVlZCB0byBjb25jZW50cmF0ZSBvbi4gTXkgaW5pdGlhbCBsaXN0IGluY2x1ZGVzOiBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZWRnZV9zdGFydHVwYCwgYW5kIGBpbXNfcGN1X3Byb2JlYC4gU2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgY29tcHJlaGVuc2l2ZSByZXZpZXcuXG5cbk5vdywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEl0J3MgYSBodW5jaCBiYXNlZCBvbiBleHBlcmllbmNlLiBJIG5lZWQgdG8gc2VlIGlmIGFueSBvdGhlciBkcml2ZXJzIGluIHRoZSBzeXN0ZW0gYXJlIHBvdGVudGlhbGx5IGxldmVyYWdpbmcgZWl0aGVyIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgb3IgYGV6dXNiX2Z4Ml9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBpcyB2aXRhbCBmb3IgYXZvaWRpbmcgdW5leHBlY3RlZCBzaWRlLWVmZmVjdHMgZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IGludGVyY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTcyLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjI5LjQ4NjEzNTIwMloiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNDM4NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9NTg9c3RhdGljIGludCBlenVzYl9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTE5LVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxMjA6aW50IGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jLTEyMS1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlX3BhdGgpXFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI0LX1cXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM6MTI1OkVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKTtcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTI2LVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYz0xNjA1PXN0YXRpYyBpbnQga2V5c3Bhbl9mYWtlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMTY3Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jOjE2Nzc6XFx0aWYgKGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkKHNlcmlhbC1cXHUwMDNlZGV2LCBmd19uYW1lKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jLTE2NzgtXFx0XFx0ZGV2X2VycihcXHUwMDI2c2VyaWFsLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFxcXFxcXFwiJXNcXFxcXFxcIlxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTYzNj1zdGF0aWMgaW50IGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjU3LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jOjY1ODpcXHRpZiAoZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVxcdTAwM2VkZXYsIGZ3X25hbWUpIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jLTY1OS1cXHRcXHRkZXZfZXJyKFxcdTAwMjZzZXJpYWwtXFx1MDAzZWRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXFxcXFxcXCIlc1xcXFxcXFwiXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jPTE4Mz1zdGF0aWMgaW50IHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTg4OlxcdHJlc3BvbnNlID0gZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc2VyaWFsLVxcdTAwM2VkZXYsIFxcXCJ3aGl0ZWhlYXRfbG9hZGVyLmZ3XFxcIik7XFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4OS1cXHRpZiAocmVzcG9uc2UgXFx1MDAzZT0gMCkge1xcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYzoxOTA6XFx0XFx0cmVzcG9uc2UgPSBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzZXJpYWwtXFx1MDAzZWRldiwgXFxcIndoaXRlaGVhdC5md1xcXCIpO1xcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xOTEtXFx0XFx0aWYgKHJlc3BvbnNlIFxcdTAwM2U9IDApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oPTU9ZXh0ZXJuIGludCBlenVzYl9meDFfc2V0X3Jlc2V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KTtcXG5pbmNsdWRlL2xpbnV4L3VzYi9lenVzYi5oOjY6ZXh0ZXJuIGludCBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbGludXgvdXNiL2V6dXNiLmgtNy1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjMxLjkxMDUyNzgwNVoiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NzIxNzM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9taXNjL2V6dXNiLmM9MTQxPUVYUE9SVF9TWU1CT0xfR1BMKGV6dXNiX2Z4Ml9zZXRfcmVzZXQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDItXFxuZHJpdmVycy91c2IvbWlzYy9lenVzYi5jOjE0MzppbnQgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IHVzYl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL3VzYi9taXNjL2V6dXNiLmMtMTQ0LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqZmlybXdhcmVfcGF0aClcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDctfVxcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYzoxNDg6RVhQT1JUX1NZTUJPTF9HUEwoZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWQpO1xcbmRyaXZlcnMvdXNiL21pc2MvZXp1c2IuYy0xNDktI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjM0LjE4Nzc1MTAxWiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjIxODAyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIERvd25sb2FkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQgdmlhIFVTQiwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlc2UgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYCBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgIGluIGBrZXlzcGFuLmNgLCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYCBpbiBga2V5c3Bhbl9wZGEuY2AsIGFuZCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpbiBgd2hpdGVoZWF0LmNgLiBNYWtlcyBzZW5zZTsgaXQncyBhIGNvbW1vbiBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSBmb3IgdGhvc2UgdHlwZXMgb2YgZGV2aWNlcy4gSSdsbCBmb2N1cyBvbiBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBmb3Igbm93LiBMZXQncyBkaWcgaW50byB0aGF0IG9uZSBhbmQgc2VlIGhvdyBpdCdzIHNwZWNpZmljYWxseSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBpdCBsZXZlcmFnZXMgdGhpcyBjb21tb24gZG93bmxvYWQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTMwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODozNy43NDk5MzU2OTVaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjYwMTc3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYz02Mj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgaWRfdGFibGVfY29tYmluZWQpO1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY1LS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBDb25uZWN0IFRlY2ggV2hpdGVIRUFUIHByZXJlbnVtZXJhdGlvbiBkZXZpY2UgKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6NjY6c3RhdGljIGludCAgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTY3LVxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9ODg9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciB3aGl0ZWhlYXRfZmFrZV9kZXZpY2UgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMtOTQtXFx0Lm51bV9wb3J0cyA9XFx0XFx0MSxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6OTU6XFx0LnByb2JlID1cXHRcXHR3aGl0ZWhlYXRfZmlybXdhcmVfZG93bmxvYWQsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTk2LVxcdC5hdHRhY2ggPVxcdFxcdHdoaXRlaGVhdF9maXJtd2FyZV9hdHRhY2gsXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM9MTU4PXN0YXRpYyBpbnQgZmlybV9yZXBvcnRfdHhfZG9uZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KTtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYy0xODItKi9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmM6MTgzOnN0YXRpYyBpbnQgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXFxuZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jLTE4NC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjQwLjI3NTk2MDI2NloiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkxODkwMzIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqUmVmbGVjdGluZyBvbiB0aGUgd2hpdGVoZWF0IEZpcm13YXJlIERvd25sb2FkIFByb2JlKipcblxuT2theSwgc28gSSdtIHByb2Nlc3NpbmcgdGhpcy4gSXQgbG9va3MgbGlrZSBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCBpcyBhY3RpbmcgYXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYHdoaXRlaGVhdF9mYWtlX2RldmljZWAuIFRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIG92ZXJhbGwgc3RyYXRlZ3kuIE5vdyB0aGF0IEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJvbGVzIGFuZCBjb25uZWN0aW9ucywgdGhlIG5leHQgaW1tZWRpYXRlIGFjdGlvbiBpdGVtIGlzIHRvIGFkZCBgVVNCX1NFUklBTF9XSElURUhFQVRgIHRvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGxpc3QuIEl0J3MgYSBrZXkgcGllY2UgdG8gbWFrZSB0aGUgZG93bmxvYWQgcHJvY2VzcyB3b3JrLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIGRldmljZSBwcm9wZXJseSBhbmQgZW5zdXJlIGl0IGNhbiBiZSB1cGRhdGVkIHRocm91Z2ggb3VyIHN0YW5kYXJkIG1ldGhvZHMuIEl0J3MgYSBzZWVtaW5nbHkgc21hbGwgc3RlcCwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhpcyBjb25maWcgbGlzdCB1cGRhdGVkLCBhcyBhIGZhaWx1cmUgb24gdGhpcyBwaWVjZSBjYW4gbGVhZCB0byB0aW1lLWNvbnN1bWluZyBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU4OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI4OjUzLjE5NDg2NzAwOVoiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwMTM0ODQwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9MTA2PWNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTE1OmNvbmZpZyBVU0JfU0VSSUFMX1dISVRFSEVBVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIENvbm5lY3RUZWNoIFdoaXRlSEVBVCBTZXJpYWwgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyODo1NS40OTYyMjYzNTNaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNTAwNTE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlOiBgVVNCX1NFUklBTF9XSElURUhFQVRgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBgVVNCX1NFUklBTF9XSElURUhFQVRgIC0gd2hhdOKAmXMgcmVseWluZyBvbiAqdGhpcyo/XCIgSSBrbm93IHRoZSBuYW1lLCBJJ3ZlIGxpa2VseSBzZWVuIGl0IGluIHRoZSBjb2RlYmFzZSAob3IgZXZlbiB3cml0dGVuIGl0ISkuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcHVsbCB1cCB0aGUgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIG1vZHVsZSBzaXRzIGluIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gSSdtIHRoaW5raW5nLCBcIkxldCdzIHRyYWNrIGRvd24gdGhvc2UgZGVwZW5kZW5jaWVzLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIHRoZSBzeXN0ZW0gbmVlZCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUuIElzIHRoaXMgYSBjb3JlIHBpZWNlIG9mIHNvbWUgbGFyZ2VyIGFic3RyYWN0aW9uIG9yIGp1c3QgYSBsb3ctbGV2ZWwgcGVyaXBoZXJhbCBkcml2ZXI/IFRoZSBhbnN3ZXJzIGRpY3RhdGUgbXkgYXBwcm9hY2ggdG8gYW55IHBvdGVudGlhbCBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5MjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTowMS44MTEyMzUwMTZaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExNTpcXHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuIDExNzpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAxMTg6XFx0XFx0aGVscFxcbiAxMTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhIENvbm5lY3RUZWNoIFdoaXRlSEVBVCA0IHBvcnRcXG4gMTIwOlxcdFxcdCAgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMjM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgd2hpdGVoZWF0LlxcbiAxMjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjAxLjgxMTM4NjY3NloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTY2MzcwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgRGV2aWNlIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuQWxyaWdodCwgbm8gZXh0ZXJuYWwgbGlicmFyeSBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQsIHRoYXQncyBnb29kLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIFVTQiBkZXZpY2UuIEJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBVU0JfRVpVU0JfRlgyYCBpcyB0aGUgZGV2aWNlIG9mIGNob2ljZS4gTm93LCB0byB2ZXJpZnkgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhcnR1cCBzZXF1ZW5jZXMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAgYW5kIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gYmVnaW5zIHRvIGludGVyYWN0IHdpdGggdGhpcyBoYXJkd2FyZSBpbiBib3RoIHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMjIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjA1Ljk3Nzc1OTU0MloiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODM5NjI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZXlzcGFuX2Zha2Vfc3RhcnR1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jPTE1ODA9c3RhdGljIHZvaWQga2V5c3Bhbl9jbG9zZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0xNjA0LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIHByZS1yZW51bWVyYXRpb24gZGV2aWNlICovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYzoxNjA1OnN0YXRpYyBpbnQga2V5c3Bhbl9mYWtlX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbClcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jLTE2MDYte1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYz0zMDA0PXN0YXRpYyBzdHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIga2V5c3Bhbl9wcmVfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYy0zMDEwLVxcdC5udW1fcG9ydHNcXHRcXHQ9IDEsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYzozMDExOlxcdC5hdHRhY2hcXHRcXHRcXHQ9IGtleXNwYW5fZmFrZV9zdGFydHVwLFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMtMzAxMi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTowOC4xODYxNTk3ODhaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzM4NTU4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTYxNz1zdGF0aWMgdm9pZCBrZXlzcGFuX3BkYV9jbG9zZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM1LS8qIGRvd25sb2FkIHRoZSBmaXJtd2FyZSB0byBhIFxcXCJmYWtlXFxcIiBkZXZpY2UgKHByZS1yZW51bWVyYXRpb24pICovXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NjM2OnN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNjM3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuX3BkYS5jPTcwMT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIGtleXNwYW5fcGRhX2Zha2VfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMtNzA3LVxcdC5udW1fcG9ydHMgPVxcdFxcdDEsXFxuZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmM6NzA4OlxcdC5hdHRhY2ggPVxcdFxcdGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cCxcXG5kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYy03MDktfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTAuNTIwMDIyMjMyWiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjgxNjY2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKklkZW50aWZ5aW5nIEtleSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBzeXN0ZW1zLCBhbmQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuIEkgc2VlIHNldmVyYWwgcG90ZW50aWFsbHkgcmVsZXZhbnQgb25lczogYGVtaTI2X3Byb2JlYCwgYGVtaTYyX3Byb2JlYCwgYGVkZ2Vfc3RhcnR1cGAsIGBpbXNfcGN1X3Byb2JlYCwgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGAsIGBrZXlzcGFuX2Zha2Vfc3RhcnR1cGAsIGFuZCBga2V5c3Bhbl9wZGFfZmFrZV9zdGFydHVwYC4gRWFjaCBvZiB0aGVzZSBzdWdnZXN0cyBhIGRpZmZlcmVudCBtZWNoYW5pc20gZm9yIGluaXRpYWxpemF0aW9uIG9yIGludGVyYWN0aW9uLiBHaXZlbiB3aGF0IEknbSB0cnlpbmcgdG8gZGV0ZXJtaW5lLCBhIHF1aWNrIGNoZWNrIG9mIGB2aWNhbWAgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0J3MgYWN0aXZhdGVkLiBMZXQncyBzZWUgaWYgdGhvc2UgZW50cnkgcG9pbnRzIGdpdmUgYSBjbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToxMy45NDgxOTE1M1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyODI3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2RfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MTY3PXN0YXRpYyB2b2lkIHZpY2FtX2Rvc3RyZWFtKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA0LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjA1Oi8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHByb2JlIHRpbWUganVzdCBiZWZvcmUgc2RfaW5pdCAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjA2LXN0YXRpYyBpbnQgc2RfY29uZmlnKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMjIzLS8qIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHByb2JlIGFuZCByZXN1bWUgdGltZSAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM6MjI0OnN0YXRpYyBpbnQgc2RfaW5pdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yMjUte1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYz0yODA9c3RhdGljIHZvaWQgc2Rfc3RvcDAoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0yOTMtXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzoyOTQ6c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldilcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTI5NS17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jPTMyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHNkX2Rlc2Mgc2RfZGVzYyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzI0LVxcdC5jb25maWcgPSBzZF9jb25maWcsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjU6XFx0LmluaXQgICA9IHNkX2luaXQsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYzozMjY6XFx0LmluaXRfY29udHJvbHMgPSBzZF9pbml0X2NvbnRyb2xzLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzI3LVxcdC5zdGFydCAgPSBzZF9zdGFydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTQuMDEwNDgzNjE5WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDAyNTI3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXNzZWN0aW5nIHRoZSBnc3BjYSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBnc3BjYSBkcml2ZXIsIGFuZCBJJ3ZlIHRyYWNlZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoZSB2aWNhbSBkZXZpY2UuIGBzZF9pbml0YCBpcyBjbGVhcmx5IHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQgZm9yIHRoZSB2aWRlbyBkZXZpY2UsIGFuZCBJIHNlZSB0aGF0IGBnc3BjYV9kZXZfcHJvYmUyYCBpcyB0aGUgb25lIGNhbGxpbmcgaXQuIFRoYXQncyBpbiB0aGUgYGdzcGNhLmNgIGZpbGUg4oCTIG1ha2VzIHNlbnNlLCB0aGUgY29yZSBvZiB0aGUgZ3NwY2EgZnJhbWV3b3JrLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYHNkX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBmb3IgdmljYW0uIFRoaXMgbGlrZWx5IHNldHMgdXAgdGhlIGRldmljZSdzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gYSBtYXRjaCB0byBhIFZJRC9QSUQgb3Igb3RoZXIgVVNCIGRlc2NyaXB0b3IgY3JpdGVyaWEuIFNvIGBzZF9wcm9iZWAgaXMgcHJvYmFibHkgY2FsbGluZyBgc2RfaW5pdGAgdG8ga2ljayB0aGluZ3Mgb2ZmIGFmdGVyIHRoZSBpbml0aWFsIGRldmljZSBpZGVudGlmaWNhdGlvbiwgc2V0dGluZyB1cCBidWZmZXJzLCBldGMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODQxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTcuMzUwNzQwMDU4WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc0MjUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RfZGVzYyBzZF9kZXNjID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uYy0zMzEtLyogLS0gZGV2aWNlIGNvbm5lY3QgLS0gKi9cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjMzMjpzdGF0aWMgaW50IHNkX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzMzLVxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmM9MzQxPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBzZF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jLTM0My1cXHQuaWRfdGFibGUgICA9IGRldmljZV90YWJsZSxcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jOjM0NDpcXHQucHJvYmUgICAgICA9IHNkX3Byb2JlLFxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3ZpY2FtLmMtMzQ1LVxcdC5kaXNjb25uZWN0ID0gZ3NwY2FfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MTcuNDEzNDg4NTc3WiIsIlNlcSI6NzQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzQ2NTEzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogVVNCIENhbWVyYSBEcml2ZXIgRW50cnkgUG9pbnQgXHUwMDI2IFdEVCBDb25zaWRlcmF0aW9uKipcblxuQWxyaWdodCwgYW5vdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnQgdG8gZXhhbWluZSDigJMgYHNkX3Byb2JlYCBpbiBgZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdmljYW0uY2AuIEl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGlkZW50aWZ5IGFsbCB0aGUga2V5IHN0YXJ0aW5nIHBvaW50cyB3aGVuIHlvdSdyZSBkaWdnaW5nIGludG8gYSBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93LlxuXG5Ob3csIGxldCdzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCBgemlpcmF2ZV93ZHQuY2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlbGF0ZWQgdG8gd2F0Y2hkb2cgdGltZXIgZnVuY3Rpb25hbGl0eSwgcGVyaGFwcyB1c2VkIGZvciBlbnN1cmluZyB0aGUgY2FtZXJhIHJlbWFpbnMgcmVzcG9uc2l2ZSBvciBmb3IgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucy4gV2UgYXJlIGFzc3VtaW5nIGEgZGlyZWN0IGNvbm5lY3Rpb24sIG9yIGEgY29tcG9uZW50IG9mIHN1Y2ggYSBjb25uZWN0aW9uLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBoYXJkd2FyZSBmYWlsdXJlcyBhcmUgaGFuZGxlZCwgb3IgdGhlIGdlbmVyYWwgc3RhYmlsaXR5IG9mIGEgc3lzdGVtLCBzbyB0aGlzIGlzIGEga2V5IGFyZWEgdG8gYXNzZXNzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG92ZXJsYXAgb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgY2FtZXJhIGRyaXZlciBhbmQgdGhlIHdhdGNoZG9nIG1lY2hhbmlzbTsgdGhhdCBjb3VsZCBiZSByZWFsbHkgaW50ZXJlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mzg2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MjEuOTQ4MTQzMTE3WiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0Mzc3Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInppaXJhdmVfZmlybV92ZXJpZnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTI2OT1zdGF0aWMgaW50IHppaXJhdmVfZmlybV93cml0ZV9wa3Qoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLFxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5Mi1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM6MjkzOnN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jLTI5NC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYz0zNDA9c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTEtXFx0LyogU3RhcnQgZmlybXdhcmUgdmVyaWZpY2F0aW9uICovXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjM5MjpcXHRyZXQgPSB6aWlyYXZlX2Zpcm1fdmVyaWZ5KHdkZCwgZncpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy0zOTMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToyNC4yMzI1MjU3OTJaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTExOTU1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemlpcmF2ZV9maXJtX3VwbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmM9MjkzPXN0YXRpYyBpbnQgemlpcmF2ZV9maXJtX3ZlcmlmeShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQsXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzM5LVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYzozNDA6c3RhdGljIGludCB6aWlyYXZlX2Zpcm1fdXBsb2FkKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKndkZCxcXG5kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMtMzQxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jPTUwNj1zdGF0aWMgc3NpemVfdCB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MjQtXFxuZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jOjUyNTpcXHRlcnIgPSB6aWlyYXZlX2Zpcm1fdXBsb2FkKFxcdTAwMjZ3X3ByaXYtXFx1MDAzZXdkZCwgZncpO1xcbmRyaXZlcnMvd2F0Y2hkb2cvemlpcmF2ZV93ZHQuYy01MjYtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOToyNi41MjM3MjczMjdaIiwiU2VxIjo3NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5MjA2NjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIFN0b3JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHppaXJhdmVfd2R0X3N5c2ZzX3N0b3JlX2Zpcm1gLCB0aGF0J3MgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbiwgZ290IGl0LiBSaWdodCwgYW5kIHRoYXQgbWVhbnMgaXQncyBnb2luZyB0byBiZSB0cmlnZ2VyZWQgd2hlbmV2ZXIgc29tZW9uZSB3cml0ZXMgdG8gYSBzcGVjaWZpYyBzeXNmcyBmaWxlLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHN5c2ZzIGZpbGVzIHRoZW1zZWx2ZXMgYXJlIHRhcmdldHMgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgdGhpcyBmdW5jdGlvbiB3aXRoIGNyYWZ0ZWQgaW5wdXQuIE5vdywgbGV0J3Mgc2VlLi4uIEknbSB0aGlua2luZywgbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgemwzODA2MC5jYCBmaWxlLiBUaGF0J3MgdGhlIGxpa2VseSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjE1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjMxLjQxNTc5ODE1MloiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5ODk2Nzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDM4X2xvYWRfZmlybXdhcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM9MTUxPXN0YXRpYyBpbnQgemwzOF9md19zZW5kX3hhZGRyKHN0cnVjdCByZWdtYXAgKnJlZ21hcCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jLTE2MS1cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYzoxNjI6c3RhdGljIGludCB6bDM4X2xvYWRfZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICpyZWdtYXApXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtMTYzLXtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvemwzODA2MC5jPTU1Mj1zdGF0aWMgaW50IHpsMzhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3psMzgwNjAuYy01ODItXFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmM6NTgzOlxcdGVyciA9IHpsMzhfbG9hZF9maXJtd2FyZShkZXYsIHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuc291bmQvc29jL2NvZGVjcy96bDM4MDYwLmMtNTg0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjMzLjYxNDc3MjM1OFoiLCJTZXEiOjc5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0NjM2NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIHpsMzhfc3BpX3Byb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHpsMzhfc3BpX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcm9iZSBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgemwzODA2MGAgZGV2aWNlLiBUaGF0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCDigJMgaXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIgdG8gYmUgaW5pdGlhbGl6ZWQsIGxpa2VseSBoYW5kbGluZyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsIHNldHVwLiBOb3csIHNpbmNlIGl0IHJlbGF0ZXMgdG8gU1BJLCBteSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBTUEkgYnVzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBgaWxpMjEweC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwYXJhbGxlbHMgd2l0aCB0aGUgemwzODA2MCBzZXR1cC4gTWF5YmUgdGhlcmUncyBzb21lIGRlc2lnbiBlbGVtZW50IG9yIGltcGxlbWVudGF0aW9uIGRldGFpbCBJIGNhbiBnbGVhbiBmb3IgdXNlIGluIHRoZSB6bDM4MDYwIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzMwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mjk6MzYuODg5NDExMDY3WiIsIlNlcSI6ODAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAzMTM2ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jPTU5NT1zdGF0aWMgREVWSUNFX0FUVFIoY2FsaWJyYXRlLCBTX0lXVVNSLCBOVUxMLCBpbGkyMTB4X2NhbGlicmF0ZSk7XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk2LVxcbmRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaWxpMjEweC5jOjU5NzpzdGF0aWMgY29uc3QgdTggKmlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtNTk4LVxcdFxcdFxcdFxcdFxcdCAgICB1MTYgKmFjX2VuZCwgdTE2ICpkZl9lbmQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYz04NjU9c3RhdGljIHNzaXplX3QgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmMtODgyLVxcdGNvbnN0IHU4KiBmd2J1ZiBfX2ZyZWUoa3ZmcmVlKSA9XFxuZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbGkyMTB4LmM6ODgzOlxcdFxcdFxcdGlsaTI1MXhfZmlybXdhcmVfdG9fYnVmZmVyKGZ3LCBcXHUwMDI2YWNfZW5kLCBcXHUwMDI2ZGZfZW5kKTtcXG5kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2lsaTIxMHguYy04ODQtXFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZndidWYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTozOS4yOTI1NTUwN1oiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc4MjI0NTEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZpbmluZyB0aGUgVGFyZ2V0IExpc3QgZm9yIEZpcm13YXJlIFVwZGF0ZSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmVgLCB3aGljaCBJIGtub3cgaXMgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbi4gIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMgaW50byB0aGUgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3MuICBJIHdhcyBpbml0aWFsbHkgZ2l2ZW4gYSBsaXN0IG9mIHBvc3NpYmlsaXRpZXMsIGluY2x1ZGluZyB0aGluZ3MgbGlrZSBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZWRnZV9zdGFydHVwYCwgYGltc19wY3VfcHJvYmVgLCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGtleXNwYW5fZmFrZV9zdGFydHVwYCwgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGAsIGBzZF9wcm9iZWAgKGluIGBkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS92aWNhbS5jYCksIGB6aWlyYXZlX3dkdF9zeXNmc19zdG9yZV9maXJtYCwgYHpsMzhfc3BpX3Byb2JlYCwgYW5kIHRoZSBpbml0aWFsIGZvY3VzLCBgaWxpMjEweF9maXJtd2FyZV91cGRhdGVfc3RvcmVgIGl0c2VsZi5cblxuSSByZWFsaXplZCBJIGRvbid0IG5lZWQgKmFsbCogb2YgdGhlbSwganVzdCBhIGdvb2Qgc2VsZWN0aW9uLiBTbyBJIHN0YXJ0ZWQgd2l0aCBhIHNlbGVjdGlvbjogdGhlIGZpcnN0IHNldCBvZiB0aG9zZSBsaXN0ZWQuXG5cbk5vdywgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gIEkgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGZ1bmN0aW9ucyBhcyBlbnRyeSBwb2ludHMsIHNpbmNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBQcm9iZSBmdW5jdGlvbnMsIGZvciBpbnN0YW5jZSwgYXJlIHVzdWFsbHkgc3RhdGljLCBidXQgbm90IGlubGluZWQsIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBmb3IgcmVnaXN0cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGxpbmthZ2UgdG8gcHJvdmlkZSBnb29kIHNlbGVjdGlvbi5cblxuSSBtYWRlIGEgbm90ZSB0aGF0IGBzZF9wcm9iZWAgaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNoZWNrZWQgdG8gc2VlIGlmIGl0J3Mgc3RhdGljLiBJdCBpcywgaW4gYHZpY2FtLmNgLiBXaGlsZSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSB0YXJnZXRlZCwgSSB3YW50IHRvIHByaW9yaXRpemUgdGhlIG5vbi1zdGF0aWMgb25lcyBpZiBwb3NzaWJsZSwgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkkgdGhlbiBpZGVudGlmaWVkIGBlenVzYl9meDFfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYW5kIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGAgYXMgZXhwb3J0ZWQgc3ltYm9scywgc28gdGhleSdyZSBub24tc3RhdGljLiAgSSBhbHNvIGZvdW5kIHRoYXQgYHJlcXVlc3RfaWhleF9maXJtd2FyZWAsIGBpaGV4X3ZhbGlkYXRlX2Z3YCwgYW5kIGBpaGV4X25leHRfYmlucmVjYCBhcmUgaW5saW5lIGZ1bmN0aW9ucywgc28gSSByZW1vdmVkIHRoZW0gZnJvbSBjb25zaWRlcmF0aW9uLlxuXG5UaGVyZWZvcmUsIG15IGJlc3QgdGFyZ2V0cyBhcmU6XG4tICAgYGV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkYFxuLSAgIGBlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZGBcbi0gICBgZW1pMjZfcHJvYmVgXG4tICAgYGVtaTYyX3Byb2JlYFxuLSAgIGBlZGdlX3N0YXJ0dXBgXG4tICAgYGltc19wY3VfcHJvYmVgXG4tICAgYHdoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZGBcbi0gICBga2V5c3Bhbl9mYWtlX3N0YXJ0dXBgXG4tICAgYGtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cGBcblxuSSBkb3VibGUtY2hlY2tlZCBgZW1pMjZfcHJvYmVgIGFuZCBpdCAqaXMqIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzIGlzIHRha2VuLiBHaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gbGlzdCBqdXN0IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhbmQgYSBmZXcgaW1wb3J0YW50IHN0YXRpYyBwcm9iZSBmdW5jdGlvbnMuXG5cbk5leHQsIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9ucy4gVGhlIGNvbmZpZ3MgSSBoYXZlIGFyZTogYElOUFVUX0lNU19QQ1VgLCBgVVNCX0VNSTI2YCwgYFVTQl9FTUk2MmAsIGBVU0JfU0VSSUFMX0VER0VQT1JUYCwgYFVTQl9TRVJJQUxfS0VZU1BBTmAsIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYCwgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYCwgYFVTQl9HU1BDQV9WSUNBTWAsIGBUT1VDSFNDUkVFTl9JTEkyMTBYYCwgYFpJSVJBVkVfV0FUQ0hET0dgLCBhbmQgYFNORF9TT0NfWkwzODA2MGAuIEkgcmVtZW1iZXIgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBgVVNCX0dTUENBX1ZJQ0FNYCBkZXBlbmRzIG9uIGBWSURFT19ERVZgIGFuZCBgVVNCX0dTUENBYC5cblxuVGhlIGluc3RydWN0aW9ucyBzdGF0ZSB0byBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkIGZvciB0aGUgY29kZSB0byBjb21waWxlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiAgYFZJREVPX0RFVmAgaXMgc3RhbmRhcmQsIGJ1dCBgVVNCX0dTUENBYCBpcyBhIHN1YnN5c3RlbS5cblxuSSdtIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSBvbmVzIHdpdGggbm8gb3Igc2ltcGxlIGRlcGVuZGVuY2llczpcbi0gICBgSU5QVVRfSU1TX1BDVWAgKGRlcGVuZHMgb24gYFVTQmAsIGBMRURTX0NMQVNTYClcbi0gICBgVVNCX0VNSTI2YFxuLSAgIGBVU0JfRU1JNjJgXG4tICAgYFVTQl9TRVJJQUxfRURHRVBPUlRgXG4tICAgYFVTQl9TRVJJQUxfS0VZU1BBTmBcbi0gICBgVVNCX1NFUklBTF9LRVlTUEFOX1BEQWBcbi0gICBgVVNCX1NFUklBTF9XSElURUhFQVRgXG5cbkkgY2hlY2tlZCBgTEVEU19DTEFTU2AsIHdoaWNoIGlzIHN0YW5kYXJkLlxuXG5JIHdpbGwgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX1NFUklBTF9LRVlTUEFOYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgyOTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjI5OjU3LjA3NDgwMjUxMloiLCJTZXEiOjgyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTI6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTlxcbiAzMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclxcXCJcXG4gMzE0OlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMxNTpcXHRcXHRoZWxwXFxuIDMxNjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIEtleXNwYW4gVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXJcXG4gMzE3OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgZHJpdmVyIG1ha2VzIHVzZSBvZiBLZXlzcGFuJ3Mgb2ZmaWNpYWwgZmlybXdhcmVcXG4gMzE4OlxcdFxcdCAgYW5kIHdhcyBkZXZlbG9wZWQgd2l0aCB0aGVpciBzdXBwb3J0LiAgWW91IG11c3QgYWxzbyBpbmNsdWRlXFxuIDMxOTpcXHRcXHQgIGZpcm13YXJlIHRvIHN1cHBvcnQgeW91ciBwYXJ0aWN1bGFyIGRldmljZShzKS5cXG4gMzIwOlxcdFxcbiAzMjE6XFx0XFx0ICBTZWUgXFx1MDAzY2h0dHA6Ly9ibGVtaW5ncy5vcmcvaHVnaC9rZXlzcGFuLmh0bWxcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToyOTo1Ny4wNzQ4ODQ1MzJaIiwiU2VxIjo4MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0MzY1MzI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogVVNCIFNlcmlhbCBLZXlTcGFuIFBEQSoqXG5cblJpZ2h0LCBubyBpbml0aWFsIGRlcGVuZGVuY2llcyBsZWFwaW5nIG91dCBhdCBtZS4gQWx3YXlzIGEgZ29vZCBzaWduLiBMZXQncyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcywgdGhvdWdoLiBUaW1lIHRvIGRyaWxsIGRvd24uIFRoZSBmaXJzdCBwb3J0IG9mIGNhbGwsIG5hdHVyYWxseSwgaXMgdG8gcmlnb3JvdXNseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfU0VSSUFMX0tFWVNQQU5fUERBYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIGFyZS4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gZ290Y2hhcyBvciBjb25mbGljdHMgbHVya2luZyBiZW5lYXRoIHRoZSBzdXJmYWNlLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV2YWx1YXRlIGl0cyBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDUwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzA6MDMuMDE4NTQzMzUyWiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDE6XFx0Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcXG4gMzAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgS2V5c3BhbiBQREEgLyBYaXJjb20gU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4gMzAzOlxcdFxcdHNlbGVjdCBVU0JfRVpVU0JfRlgyXFxuIDMwNDpcXHRcXHRoZWxwXFxuIDMwNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGEgS2V5c3BhbiBQREEsIFhpcmNvbSBvciBFbnRyZWdhIHNpbmdsZVxcbiAzMDY6XFx0XFx0ICBwb3J0IFVTQiB0byBzZXJpYWwgY29udmVydGVyIGRldmljZS4gVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mXFxuIDMwNzpcXHRcXHQgIGZpcm13YXJlIGRldmVsb3BlZCBmcm9tIHNjcmF0Y2ggYnkgQnJpYW4gV2FybmVyLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzMTA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjMwOjAzLjAxODczNzk3MloiLCJTZXEiOjg1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzgzMTg0ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBBIFByZXJlcXVpc2l0ZSoqXG5cbkFscmlnaHQsIG5vIGltbWVkaWF0ZSBzaG93c3RvcHBlcnMgZmxhZ2dlZCBpbml0aWFsbHkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZHJpbGwgZG93bi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHZlcmlmeSBkZXBlbmRlbmNpZXMgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy4gTm8gYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX1NFUklBTF9XSElURUhFQVRgLiBVbmRlcnN0YW5kIHdoYXQgaXMgbGlua2VkIHRvIHRoaXMgbW9kdWxlIHRvIGF2b2lkIGJyZWFraW5nIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0J3MgdGllZCBpbnRvIHRoYXQuIEdvdHRhIGtub3cgd2hlcmUgd2Ugc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODcxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozMDowNS44MDE5MjY2NDFaIiwiU2VxIjo4NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExNTpcXHRjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuIDExNzpcXHRcXHRzZWxlY3QgVVNCX0VaVVNCX0ZYMlxcbiAxMTg6XFx0XFx0aGVscFxcbiAxMTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBhIENvbm5lY3RUZWNoIFdoaXRlSEVBVCA0IHBvcnRcXG4gMTIwOlxcdFxcdCAgVVNCIHRvIHNlcmlhbCBjb252ZXJ0ZXIgZGV2aWNlLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMjM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgd2hpdGVoZWF0LlxcbiAxMjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjMwOjA1LjgwMjA1OTU0MVoiLCJTZXEiOjg3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzYwNjA5NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBsYW46IFVTQiBGaXJtd2FyZSBQYXJzaW5nIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTm8gZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBnb29kIOKAkyBpdCBtYWtlcyB0aGluZ3Mgc2ltcGxlci4gRXNzZW50aWFsbHksIHRoZSBjb3JlIHByb2JsZW0gaXMgcmVsYXRlZCB0byBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgYW4gaW5maW5pdGUgbG9vcCB3aXRoaW4gdGhlIEludGVsIEhFWCBmaXJtd2FyZSBwYXJzaW5nIHJvdXRpbmVzLCBzcGVjaWZpY2FsbHkgYGloZXhfbmV4dF9iaW5yZWNgIGFuZCBgaWhleF92YWxpZGF0ZV9md2AuIFRoZXNlIGFyZSBjcnVjaWFsIGZvciBhIGhhbmRmdWwgb2YgVVNCIGRyaXZlcnMgdG8gbG9hZCBhbmQgdmFsaWRhdGUgdGhlaXIgZmlybXdhcmUuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGV4cGxvaXRhYmxlIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgYW5kIHBhc3MgdGhlbSB2aWEgYHJlcXVlc3RfZmlybXdhcmVgLlxuXG5TbywgdGhlIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBmb2N1cyBvbiB0byBlbmFibGUgYW5kIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2dWxuZXJhYmlsaXR5IGFyZTogYElOUFVUX0lNU19QQ1VgLCBgTEVEU19DTEFTU2AsIGBVU0JfRU1JMjZgLCBgVVNCX0VNSTYyYCwgYFVTQl9TRVJJQUxfRURHRVBPUlRgLCBgVVNCX1NFUklBTF9LRVlTUEFOYCwgYFVTQl9TRVJJQUxfS0VZU1BBTl9QREFgLCBhbmQgYFVTQl9TRVJJQUxfV0hJVEVIRUFUYC4gVGhlc2UgZW5hYmxlIHRoZSB0YXJnZXQgVVNCIGRyaXZlcnMuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgbmVlZCBteSBhdHRlbnRpb24sIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgdGhlIHByb2JlIGFuZCBzdGFydHVwIGZ1bmN0aW9ucyBmb3IgdGhlIGFmb3JlbWVudGlvbmVkIFVTQiBkcml2ZXJzLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIHZhbGlkYXRpb24gaGFwcGVuLiBIZXJlJ3MgYSBydW5kb3duOiBgZXp1c2JfZngxX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZXp1c2JfZngyX2loZXhfZmlybXdhcmVfZG93bmxvYWRgLCBgZW1pMjZfcHJvYmVgLCBgZW1pNjJfcHJvYmVgLCBgZWRnZV9zdGFydHVwYCwgYGltc19wY3VfcHJvYmVgLCBgd2hpdGVoZWF0X2Zpcm13YXJlX2Rvd25sb2FkYCwgYGtleXNwYW5fZmFrZV9zdGFydHVwYCwgYW5kIGBrZXlzcGFuX3BkYV9mYWtlX3N0YXJ0dXBgLiBGdXp6aW5nIHRoZXNlIHNob3VsZCBiZSBhIGdvb2QgcGxhbiB0byBleGVyY2lzZSB0aGUgdnVsbmVyYWJsZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlIHBhdGggdG8gdmFsaWRhdGluZyB0aGlzIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyMDYsIk91dHB1dFRva2VucyI6MzA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzA6MTMuNTYyNjczMzU0WiIsIlNlcSI6ODgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMzY4OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTlBVVF9JTVNfUENVXCIsXG4gICAgXCJMRURTX0NMQVNTXCIsXG4gICAgXCJVU0JfRU1JMjZcIixcbiAgICBcIlVTQl9FTUk2MlwiLFxuICAgIFwiVVNCX1NFUklBTF9FREdFUE9SVFwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5fUERBXCIsXG4gICAgXCJVU0JfU0VSSUFMX1dISVRFSEVBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZW1pMjZfcHJvYmVcIixcbiAgICBcImVtaTYyX3Byb2JlXCIsXG4gICAgXCJlZGdlX3N0YXJ0dXBcIixcbiAgICBcImltc19wY3VfcHJvYmVcIixcbiAgICBcIndoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwia2V5c3Bhbl9mYWtlX3N0YXJ0dXBcIixcbiAgICBcImtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTlBVVF9JTVNfUENVXCIsXG4gICAgXCJMRURTX0NMQVNTXCIsXG4gICAgXCJVU0JfRU1JMjZcIixcbiAgICBcIlVTQl9FTUk2MlwiLFxuICAgIFwiVVNCX1NFUklBTF9FREdFUE9SVFwiLFxuICAgIFwiVVNCX1NFUklBTF9LRVlTUEFOXCIsXG4gICAgXCJVU0JfU0VSSUFMX0tFWVNQQU5fUERBXCIsXG4gICAgXCJVU0JfU0VSSUFMX1dISVRFSEVBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV6dXNiX2Z4MV9paGV4X2Zpcm13YXJlX2Rvd25sb2FkXCIsXG4gICAgXCJlenVzYl9meDJfaWhleF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwiZW1pMjZfcHJvYmVcIixcbiAgICBcImVtaTYyX3Byb2JlXCIsXG4gICAgXCJlZGdlX3N0YXJ0dXBcIixcbiAgICBcImltc19wY3VfcHJvYmVcIixcbiAgICBcIndoaXRlaGVhdF9maXJtd2FyZV9kb3dubG9hZFwiLFxuICAgIFwia2V5c3Bhbl9mYWtlX3N0YXJ0dXBcIixcbiAgICBcImtleXNwYW5fcGRhX2Zha2Vfc3RhcnR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgbWFsZm9ybWVkIEludGVsIEhFWCBmaXJtd2FyZSBmaWxlcyBpbiBgaWhleF9uZXh0X2JpbnJlY2AgYW5kIGBpaGV4X3ZhbGlkYXRlX2Z3YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvaWhleC5oYCBhbmQgYXJlIHVzZWQgYnkgc2V2ZXJhbCBVU0IgZHJpdmVycyB0byBsb2FkIGFuZCB2YWxpZGF0ZSBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBieSBlbXVsYXRpbmcgVVNCIGRldmljZXMgYW5kIHByb3ZpZGluZyBhcmJpdHJhcnkgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgc3RhcnR1cCBmdW5jdGlvbnMgb2YgdGhlc2UgVVNCIGRyaXZlcnMgd2lsbCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgZmlybXdhcmUgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[1] Phase: Succeeded StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 09:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 09:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2] Phase: Succeeded StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 09:30:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 09:30:26 +0000 UTC FinishedAt: 2026-08-03 09:30:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfpp2t/series-workflowfpp2t-convert-artifact-3017058747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 09:30:36 +0000 UTC FinishedAt: 2026-08-03 10:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 09:30:36 +0000 UTC FinishedAt: 2026-08-03 10:18:58 +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:*e8e3ee17-c14f-4661-a43f-2dd07ba7873f,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-workflowfpp2t/series-workflowfpp2t-convert-artifact-3017058747/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": "68689e4f-8e1e-451b-9d80-d4b92dac6d28", "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-workflowfpp2t/series-workflowfpp2t-build-action-2208937977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 09:30:36 +0000 UTC FinishedAt: 2026-08-03 10:18:10 +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:*e8e3ee17-c14f-4661-a43f-2dd07ba7873f,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-workflowfpp2t/series-workflowfpp2t-convert-artifact-3017058747/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": "68689e4f-8e1e-451b-9d80-d4b92dac6d28", "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-workflowfpp2t/series-workflowfpp2t-build-action-2208937977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 10:18:58 +0000 UTC FinishedAt: 2026-08-03 10:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 10:18:58 +0000 UTC FinishedAt: 2026-08-03 10:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 10:18:58 +0000 UTC FinishedAt: 2026-08-03 10:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 10:18:58 +0000 UTC FinishedAt: 2026-08-03 10:19:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfpp2t/series-workflowfpp2t-convert-artifact-1191941394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 10:19:22 +0000 UTC FinishedAt: 2026-08-03 10:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 10:19:22 +0000 UTC FinishedAt: 2026-08-03 10:21:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*68689e4f-8e1e-451b-9d80-d4b92dac6d28,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-workflowfpp2t/series-workflowfpp2t-build-action-2208937977/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-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 10:21:39 +0000 UTC FinishedAt: 2026-08-03 10:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:21:39 +0000 UTC FinishedAt: 2026-08-03 10:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 10:21:39 +0000 UTC FinishedAt: 2026-08-03 10:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 10:21:39 +0000 UTC FinishedAt: 2026-08-03 10:55:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e8e3ee17-c14f-4661-a43f-2dd07ba7873f,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-workflowfpp2t/series-workflowfpp2t-convert-artifact-1191941394/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": "ab6e4150-dc17-4164-a892-b740609ebe83", "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-workflowfpp2t/series-workflowfpp2t-build-action-3663991206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 10:21:39 +0000 UTC FinishedAt: 2026-08-03 10:55:04 +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:*e8e3ee17-c14f-4661-a43f-2dd07ba7873f,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-workflowfpp2t/series-workflowfpp2t-convert-artifact-1191941394/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": "ab6e4150-dc17-4164-a892-b740609ebe83", "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-workflowfpp2t/series-workflowfpp2t-build-action-3663991206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 10:55:29 +0000 UTC FinishedAt: 2026-08-03 10:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 10:55:29 +0000 UTC FinishedAt: 2026-08-03 10:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 10:55:29 +0000 UTC FinishedAt: 2026-08-03 10:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 10:55:29 +0000 UTC FinishedAt: 2026-08-03 10:57:20 +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:*ab6e4150-dc17-4164-a892-b740609ebe83,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-workflowfpp2t/series-workflowfpp2t-build-action-3663991206/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-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"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:*68689e4f-8e1e-451b-9d80-d4b92dac6d28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ab6e4150-dc17-4164-a892-b740609ebe83,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-workflowfpp2t/series-workflowfpp2t-build-action-2208937977/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-workflowfpp2t/series-workflowfpp2t-build-action-3663991206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 10:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 10:57:45 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"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-workflowfpp2t/series-workflowfpp2t-convert-artifact-37565543/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 10:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 10:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:57:32 +0000 UTC FinishedAt: 2026-08-03 10:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 10:57:52 +0000 UTC FinishedAt: 2026-08-03 14:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpp2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ezusb_fx1_ihex_firmware_download","ezusb_fx2_ihex_firmware_download","emi26_probe","emi62_probe","edge_startup","ims_pcu_probe","whiteheat_firmware_download","keyspan_fake_startup","keyspan_pda_fake_startup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["INPUT_IMS_PCU","LEDS_CLASS","USB_EMI26","USB_EMI62","USB_SERIAL_EDGEPORT","USB_SERIAL_KEYSPAN","USB_SERIAL_KEYSPAN_PDA","USB_SERIAL_WHITEHEAT"],"series_id":"f0f59ccd-c775-4f8d-8269-b9595eef6c5c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 10:57:52 +0000 UTC FinishedAt: 2026-08-03 13:59:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*68689e4f-8e1e-451b-9d80-d4b92dac6d28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ab6e4150-dc17-4164-a892-b740609ebe83,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-workflowfpp2t/series-workflowfpp2t-build-action-2208937977/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-workflowfpp2t/series-workflowfpp2t-build-action-3663991206/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-workflowfpp2t/series-workflowfpp2t-convert-artifact-37565543/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,}