Name: series-workflowfnpwx Phase: Succeeded StartedAt: 2026-08-07 06:33:20 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[0] Phase: Succeeded StartedAt: 2026-08-07 06:33:20 +0000 UTC FinishedAt: 2026-08-07 06:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 06:33:20 +0000 UTC FinishedAt: 2026-08-07 06:36:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SND_ALOOP", "SND_DUMMY", "SND_MPU401", "SND_MTS64", "SND_PORTMAN2X4", "SND_SERIAL_U16550", "SND_VIRMIDI", "SND_SOC_BELLS", "SND_SEQUENCER", "PARPORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SND_ALOOP", "SND_DUMMY", "SND_MPU401", "SND_MTS64", "SND_PORTMAN2X4", "SND_SERIAL_U16550", "SND_VIRMIDI", "SND_SOC_BELLS", "SND_SEQUENCER", "PARPORT" ], "series_id": "08278640-61b4-4fd8-9f52-35ead03bc0ea" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "loopback_probe", "snd_dummy_probe", "snd_mpu401_probe", "snd_mts64_probe", "snd_portman_probe", "snd_serial_probe", "snd_virmidi_probe", "bells_probe" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYzk5Y2JjZjg5MDc4MGU1MjY2MTI3NjM4ZDUzMzI2OGMyZmE5YTNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmMgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbmluZGV4IDA2YmZlMDllYWUxYTIuLjk1MjBkMzQzMWEyZWUgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvYWxvb3AuY1xuQEAgLTE4MDIsNiAmIzQzOzE4MDIsOSBAQCBzdGF0aWMgaW50IGxvb3BiYWNrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdGlmIChkZXYgXHUwMDNjIDAgfHwgZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9kdW1teS5jIGIvc291bmQvZHJpdmVycy9kdW1teS5jXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcbkBAIC0xMDE3LDYgJiM0MzsxMDE3LDkgQEAgc3RhdGljIGludCBzbmRfZHVtbXlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGlkeCwgZXJyO1xuIFx0aW50IGRldiA9IGRldnB0ci1cdTAwM2VpZDtcbiBcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXG4gXHRcdFx0XHRzaXplb2Yoc3RydWN0IHNuZF9kdW1teSksIFx1MDAyNmNhcmQpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXG5pbmRleCBjMjE3YzQyN2JmMWUwLi5hNTE5Y2U5ZWI5MmY0IDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXG5AQCAtODksNiAmIzQzOzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBlcnI7XG4gXHRzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdGlmIChwb3J0W2Rldl0gPT0gU05EUlZfQVVUT19QT1JUKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgXCYjMzQ7c3BlY2lmeSBwb3J0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tdHM2NC5jIGIvc291bmQvZHJpdmVycy9tdHM2NC5jXG5pbmRleCAzNmU5ZWFiMjA0Y2FjLi4zZmZmNWNmYzRkNzFmIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9tdHM2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL210czY0LmNcbkBAIC05MDAsNyAmIzQzOzkwMCw3IEBAIHN0YXRpYyBpbnQgc25kX210czY0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcbi1cdGlmIChkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5pbmRleCBkY2MwODk5Y2ZiOTlhLi4wYTc4MTU4ODA4ZTdkIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5AQCAtNjk3LDcgJiM0Mzs2OTcsNyBAQCBzdGF0aWMgaW50IHNuZF9wb3J0bWFuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcbi1cdGlmIChkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYyBiL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG5pbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG5AQCAtODQ2LDYgJiM0Mzs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XG4gXHRjYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzpcbiBcdFx0aW5zW2Rldl0gPSAxO1xuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbmluZGV4IGEyMDRmNDJkMTAyNjUuLjBhOTMxM2VlYjg5OGEgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgaW50IHNuZF92aXJtaWRpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBpZHgsIGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdGVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KFx1MDAyNmRldnB0ci1cdTAwM2VkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLFxuIFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBzbmRfY2FyZF92aXJtaWRpKSwgXHUwMDI2Y2FyZCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmMgYi9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG5pbmRleCBmYzQ5NjNkM2I5OWJmLi4zYTAzNTI0OTkyYmY3IDEwMDY0NFxuLS0tIGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xuQEAgLTQ3MCw2ICYjNDM7NDcwLDkgQEAgc3RhdGljIGludCBiZWxsc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHBkZXYtXHUwMDNlaWQgXHUwMDNjIDAgfHwgcGRldi1cdTAwM2VpZCBcdTAwM2U9IEFSUkFZX1NJWkUoYmVsbHNfY2FyZHMpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0YmVsbHNfY2FyZHNbcGRldi1cdTAwM2VpZF0uZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXG4gXHRyZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY2FyZChcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2YmVsbHNfY2FyZHNbcGRldi1cdTAwM2VpZF0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTkRfQUxPT1AmIzM0OywKICAgICYjMzQ7U05EX0RVTU1ZJiMzNDssCiAgICAmIzM0O1NORF9NUFU0MDEmIzM0OywKICAgICYjMzQ7U05EX01UUzY0JiMzNDssCiAgICAmIzM0O1NORF9QT1JUTUFOMlg0JiMzNDssCiAgICAmIzM0O1NORF9TRVJJQUxfVTE2NTUwJiMzNDssCiAgICAmIzM0O1NORF9WSVJNSURJJiMzNDssCiAgICAmIzM0O1NORF9TT0NfQkVMTFMmIzM0OywKICAgICYjMzQ7U05EX1NFUVVFTkNFUiYjMzQ7LAogICAgJiMzNDtQQVJQT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9vcGJhY2tfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX2R1bW15X3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9tcHU0MDFfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX210czY0X3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9wb3J0bWFuX3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9zZXJpYWxfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3Zpcm1pZGlfcHJvYmUmIzM0OywKICAgICYjMzQ7YmVsbHNfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJiMzOTtzIGRldmljZSBjcmVhdGlvbiBwc2V1ZG8tc3lzY2FsbHMpLCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGFuZCB0aGUgY2hhbmdlcyBmaXggYSBmdW5jdGlvbmFsIGJ1Zy4gVGhlcmVmb3JlLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmM5OWNiY2Y4OTA3ODBlNTI2NjEyNzYzOGQ1MzMyNjhjMmZhOWEzYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDY6MzQ6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmMgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmMKaW5kZXggMDZiZmUwOWVhZTFhMi4uOTUyMGQzNDMxYTJlZSAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9hbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvYWxvb3AuYwpAQCAtMTgwMiw2ICYjNDM7MTgwMiw5IEBAIHN0YXRpYyBpbnQgbG9vcGJhY2tfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKQogCWludCBkZXYgPSBkZXZwdHItJmd0O2lkOwogCWludCBlcnI7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoJmFtcDtkZXZwdHItJmd0O2RldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsCiAJCQkJc2l6ZW9mKHN0cnVjdCBsb29wYmFjayksICZhbXA7Y2FyZCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2R1bW15LmMgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmMKaW5kZXggNzI4M2YwZjE4ODEzZC4uNDFlNzk1NzRjOTMwMiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvZHVtbXkuYwpAQCAtMTAxNyw2ICYjNDM7MTAxNyw5IEBAIHN0YXRpYyBpbnQgc25kX2R1bW15X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cikKIAlpbnQgaWR4LCBlcnI7CiAJaW50IGRldiA9IGRldnB0ci0mZ3Q7aWQ7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoJmFtcDtkZXZwdHItJmd0O2RldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsCiAJCQkJc2l6ZW9mKHN0cnVjdCBzbmRfZHVtbXkpLCAmYW1wO2NhcmQpOwogCWlmIChlcnIgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmMgYi9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwppbmRleCBjMjE3YzQyN2JmMWUwLi5hNTE5Y2U5ZWI5MmY0IDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwpAQCAtODksNiAmIzQzOzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cikKIAlpbnQgZXJyOwogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKIAomIzQzOwlpZiAoZGV2ICZsdDsgMCB8fCBkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAlpZiAocG9ydFtkZXZdID09IFNORFJWX0FVVE9fUE9SVCkgewogCQlkZXZfZXJyKCZhbXA7ZGV2cHRyLSZndDtkZXYsICYjMzQ7c3BlY2lmeSBwb3J0XG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tdHM2NC5jIGIvc291bmQvZHJpdmVycy9tdHM2NC5jCmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvbXRzNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL210czY0LmMKQEAgLTkwMCw3ICYjNDM7OTAwLDcgQEAgc3RhdGljIGludCBzbmRfbXRzNjRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CiAKLQlpZiAoZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwlpZiAoZGV2ICZsdDsgMCB8fCBkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiAJCXJldHVybiAtRU5PREVWOwogCWlmICghZW5hYmxlW2Rldl0pIAogCQlyZXR1cm4gLUVOT0VOVDsKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jIGIvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKaW5kZXggZGNjMDg5OWNmYjk5YS4uMGE3ODE1ODgwOGU3ZCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKQEAgLTY5Nyw3ICYjNDM7Njk3LDcgQEAgc3RhdGljIGludCBzbmRfcG9ydG1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAotCWlmIChkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiYjNDM7CWlmIChkZXYgJmx0OyAwIHx8IGRldiAmZ3Q7PSBTTkRSVl9DQVJEUykKIAkJcmV0dXJuIC1FTk9ERVY7CiAJaWYgKCFlbmFibGVbZGV2XSkgCiAJCXJldHVybiAtRU5PRU5UOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwppbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwpAQCAtODQ2LDYgJiM0Mzs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKQogCWludCBlcnI7CiAJaW50IGRldiA9IGRldnB0ci0mZ3Q7aWQ7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJc3dpdGNoIChhZGFwdG9yW2Rldl0pIHsKIAljYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzoKIAkJaW5zW2Rldl0gPSAxOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy92aXJtaWRpLmMgYi9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwppbmRleCBhMjA0ZjQyZDEwMjY1Li4wYTkzMTNlZWI4OThhIDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwpAQCAtNzUsNiAmIzQzOzc1LDkgQEAgc3RhdGljIGludCBzbmRfdmlybWlkaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpCiAJaW50IGlkeCwgZXJyOwogCWludCBkZXYgPSBkZXZwdHItJmd0O2lkOwogCiYjNDM7CWlmIChkZXYgJmx0OyAwIHx8IGRldiAmZ3Q7PSBTTkRSVl9DQVJEUykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCWVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KCZhbXA7ZGV2cHRyLSZndDtkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLAogCQkJCXNpemVvZihzdHJ1Y3Qgc25kX2NhcmRfdmlybWlkaSksICZhbXA7Y2FyZCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jIGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuYwppbmRleCBmYzQ5NjNkM2I5OWJmLi4zYTAzNTI0OTkyYmY3IDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmMKQEAgLTQ3MCw2ICYjNDM7NDcwLDkgQEAgc3RhdGljIGludCBiZWxsc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCWludCByZXQ7CiAKJiM0MzsJaWYgKHBkZXYtJmd0O2lkICZsdDsgMCB8fCBwZGV2LSZndDtpZCAmZ3Q7PSBBUlJBWV9TSVpFKGJlbGxzX2NhcmRzKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWJlbGxzX2NhcmRzW3BkZXYtJmd0O2lkXS5kZXYgPSAmYW1wO3BkZXYtJmd0O2RldjsKIAogCXJldCA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9jYXJkKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmYW1wO2JlbGxzX2NhcmRzW3BkZXYtJmd0O2lkXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50IGZvciBTb3VuZCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24gQm91bmRzIENoZWNrcyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdGhhdCYjMzk7cyBhZGRpbmcgYm91bmRzIGNoZWNrcyB0byBgZGV2cHRyLSZndDtpZGAgKG9yIGBwZGV2LSZndDtpZGAgLSBpdCYjMzk7cyB0aGUgc2FtZSB0aGluZyBoZXJlLCByaWdodD8pIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyBhcmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBkcml2ZXIgYmluZGluZyDigJMgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8ga2VlcCBpbiBtaW5kLgoKV2UmIzM5O3JlIGxvb2tpbmcgYXQgZHJpdmVycyBsaWtlIGBhbG9vcC5jYCwgYGR1bW15LmNgLCBhbmQgYHZpcm1pZGkuY2AsIGFsbCBvZiB3aGljaCBhcmUgdmlydHVhbCBzb3VuZCBkcml2ZXJzIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBsb2FkZWQgYW5kIHByb2JlZC4gU28sIHllYWgsIHRoaXMgc2VlbXMgcG90ZW50aWFsbHkgZnV6emFibGUuIEJ1dCB3YWl0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBiZSBwcmVjaXNlLiBUaGUgY2hlY2sgaXMgc3BlY2lmaWNhbGx5IG9uIGBkZXZwdHItJmd0O2lkYCwgd2hpY2gsIGluIHRoaXMgY29udGV4dCwgaXMgdGhlIHBsYXRmb3JtIGRldmljZSBJRC4KClRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gY29udHJvbCBvciBpbmZsdWVuY2UgdGhpcyBJRC4gQ2FuIHdlIGZ1enogcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgY3JlYXRpbmcgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHM/IFRoZSBwYXRjaCBzYXlzIHRoZXNlIGFyZSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIHdoZW4gYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gdGhlIGRyaXZlci4gU3l6a2FsbGVyLCB3aXRoIGl0cyBgc3l6X2Rldl9jcmVhdGVgIG9yIHN5c2ZzIG1hbmlwdWxhdGlvbiBvciBtb2R1bGUgcGFyYW1ldGVycywgY291bGQgcG90ZW50aWFsbHkgYWNoaWV2ZSB0aGlzLgoKTm93LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlICYjMzk7d29ydGggZnV6emluZyYjMzk7IGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmllcyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIG9yIGZvciBgLnJlbW92ZWAgb3IgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucy4gVGhpcyBpcyAqcHJvYmUqIGNvZGUsIG5vdCByZW1vdmUgY29kZS4gUHJvYmUgZnVuY3Rpb25zIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIGRyaXZlciBiaW5kLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBhIHByb2JlIGZ1bmN0aW9uIHRoYXQgY291bGQgcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIHF1ZXN0aW9uIGlzLCBpZiBpdCYjMzk7cyByZWFjaGFibGUgYW5kIHdlJiMzOTtyZSBwcmV2ZW50aW5nIGFuIE9PQiwgaXMgdGhpcyBhIGdvb2QgY2FuZGlkYXRlPyBZZXMsIGl0IGlzIHdvcnRoIGZ1enppbmcuCgpUbyBiZSBleHRyYSBjZXJ0YWluLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0byBjb25maXJtIHRoYXQgdGhlc2UgZHJpdmVycyBjYW4gYmUgZWFzaWx5IGVuYWJsZWQgYW5kIGxvYWRlZC4gTGV0JiMzOTtzIHNlZS4uLiBgYWxvb3AuY2AgaXMgYFNORF9BTE9PUGAsIGBkdW1teS5jYCBpcyBgU05EX0RVTU1ZYCwgYHZpcm1pZGkuY2AgaXMgYFNORF9WSVJNSURJYCwgYG1wdTQwMS5jYCBpcyBgU05EX01QVTQwMWAsIGBtdHM2NC5jYCBpcyBgU05EX01UUzY0YCwgYHBvcnRtYW4yeDQuY2AgaXMgYFNORF9QT1JUTUFOMlg0YCwgYHNlcmlhbC11MTY1NTAuY2AgaXMgYFNORF9TRVJJQUxfVTE2NTUwYCwgYW5kIGBiZWxscy5jYCBpcyBgU05EX1NPQ19CRUxMU2AuIEl0IGxvb2tzIGxpa2UgdGhlc2Ugc2hvdWxkIGJlIHJlYWRpbHkgYXZhaWxhYmxlIHZpYSBzb21lIHF1aWNrIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gZmluZCB0aGVtLiBEZWZpbml0ZWx5IHdvcnRoIGxvb2tpbmcgYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BTE9PUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9Nzk9Y29uZmlnIFNORF9EVU1NWVxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy05MS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo5Mjpjb25maWcgU05EX0FMT09QXG5zb3VuZC9kcml2ZXJzL0tjb25maWctOTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGxvb3BiYWNrIGRyaXZlciAoUENNKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTUKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqQXNzZXNzbWVudCBvZiBBdWRpbyBEZXZpY2UgU3VwcG9ydCoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBzdXBwb3J0IGZvciBhIGZldyBzcGVjaWZpYyBhdWRpbyBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gcnVuIHRocm91Z2ggdGhlc2UgaW4gbXkgaGVhZCDigJMgbGV0JiMzOTtzIHNlZSwgZmlyc3QgYFNORF9EVU1NWWAuIFRoYXQmIzM5O3MgdGhlIGJhc2ljIHNvdW5kIGR1bW15IG1vZHVsZSwgbm90IHVzdWFsbHkgc29tZXRoaW5nIEkmIzM5O20gYWN0aXZlbHkgY29uY2VybmVkIHdpdGgsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGtlZXAgaXQgaW4gbWluZC4KClRoZW4sIHRoZXJlJiMzOTtzIGBTTkRfVklSTUlESWAuIFZpcnR1YWwgTUlESSBpcyBzb21ldGhpbmcgSSBmcmVxdWVudGx5IGhhdmUgdG8gYWNjb3VudCBmb3I7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBpbXBsZW1lbnRlZC4gTmV4dCB1cCwgYFNORF9NUFU0MDFgLiBUaGUgb2xkIE1QVS00MDEgTUlESSBpbnRlcmZhY2Ug4oCTIHN0aWxsIHNlZWluZyB1c2FnZSBpbiBjZXJ0YWluIGVudmlyb25tZW50cy4gSSBoYXZlIHRvIGNoZWNrIGhvdyB0aGUgZHJpdmVycyBhcmUgaG9sZGluZyB1cCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcywgYnV0IEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgZmFpcmx5IHN0YWJsZSBhdCB0aGlzIHBvaW50LgoKRm9sbG93aW5nIHRoYXQsIGBTTkRfTVRTNjRgLCB3aGljaCBwcm9iYWJseSBuZWVkcyBjbG9zZXIgaW5zcGVjdGlvbi4gSSBjYW4gcHJlZGljdCB0aGlzIG9uZSBtaWdodCBicmluZyB1cCBzb21lIG9ic2N1cmUgaXNzdWVzLiBOb3csIGBTTkRfUE9SVE1BTjJYNGAuIEkgbmVlZCB0byBlbnN1cmUgYSBwb3J0IG1hbmFnZXIgc2V0dXAgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gTGV0JiMzOTtzIHNlZSBhYm91dCB0aGUgc2VyaWFsIHBvcnQgaW1wbGVtZW50YXRpb24gbmV4dCB3aXRoIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgdXN1YWxseSBleHBlY3QgdGhpcyBkcml2ZXIgdG8gYmUgc29saWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaW50ZXJydXB0cy4KCkZpbmFsbHksIGBTTkRfU09DX0JFTExTYC4gVGhpcyBvbmUgaXMgcHJvYmFibHkgYSBTeXN0ZW0gT24gQ2hpcCAoU09DKSBzcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBhbmQgYXJjaGl0ZWN0dXJlIHRvIGRldGVybWluZSBpZiBhbnkgc3VwcG9ydCBpcyBuZWVkZWQsIGJ1dCBJIHNob3VsZCBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8ga2VlcCBhbiBleWUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9EVU1NWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9NDk9Y29uZmlnIFNORF9QQ1NQXG4tLVxuc291bmQvZHJpdmVycy9LY29uZmlnLTc4LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjc5OmNvbmZpZyBTTkRfRFVNTVlcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0R1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfVklSTUlESSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9MTEyPWNvbmZpZyBTTkRfUENNVEVTVFxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xMjgtXG5zb3VuZC9kcml2ZXJzL0tjb25maWc6MTI5OmNvbmZpZyBTTkRfVklSTUlESVxuc291bmQvZHJpdmVycy9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgTUlESSBzb3VuZGNhcmRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX01QVTQwMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfTVBVNDAxX1VBUlRcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWc9MTg3PWNvbmZpZyBTTkRfU0VSSUFMX0dFTkVSSUNcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjA0LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjIwNTpjb25maWcgU05EX01QVTQwMVxuc291bmQvZHJpdmVycy9LY29uZmlnLTIwNi1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DX0JFTExTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9zYW1zdW5nL0tjb25maWc9NTg9Y29uZmlnIFNORF9TT0NfVE9CRVJNT1JZXG4tLVxuc291bmQvc29jL3NhbXN1bmcvS2NvbmZpZy02NC1cbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWc6NjU6Y29uZmlnIFNORF9TT0NfQkVMTFNcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzUKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGVzZSBhdWRpbyBkZXZpY2UgaWRlbnRpZmllcnMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVtOiBgU05EX01UUzY0YCwgYFNORF9QT1JUTUFOMlg0YCwgYW5kIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoZXNlIGFzIGxpa2VseSBiZWluZyBkZXZpY2UgZHJpdmVyIG5hbWVzIHdpdGhpbiBhIExpbnV4IHNvdW5kIHN5c3RlbSwgcHJvYmFibHkgQUxTQS4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucywgYFNORF9NVFM2NGAgc3VnZ2VzdHMgc29tZSBraW5kIG9mIE1JREkgVGltZSBTdGFtcCBpbnRlcmZhY2UsIHBvc3NpYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBkZXZpY2Ugd2l0aCA2NCBjaGFubmVscyBvciBmZWF0dXJlcyBjb25uZWN0ZWQgdG8gYSBNdXNpY2FsIFRpbWUgU3luYyBzb3VyY2UsIHdoaWxlIGBTTkRfUE9SVE1BTjJYNGAgaXMgYSBiaXQgbW9yZSBzdHJhaWdodGZvcndhcmQsIGluZGljYXRpbmcgYSBwb3J0IG1hbmFnZXIgd2l0aCB0d28gaW5wdXRzIGFuZCBmb3VyIG91dHB1dHMgLSBhbG1vc3QgY2VydGFpbmx5IGEgTUlESSBpbnRlcmZhY2UgbGlrZSBhIFVTQiBkZXZpY2UuIFRoZSBsYXN0IG9uZSwgYFNORF9TRVJJQUxfVTE2NTUwYCwgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFRoZSBgVTE2NTUwYCBzdHJvbmdseSBoaW50cyBhdCBhIGxlZ2FjeSBzZXJpYWwgcG9ydCBjb250cm9sbGVyLCBhbmQgc28gdGhpcyBpcyB0aGUgaW50ZXJlc3Rpbmcgb25lIHRvIHVucGFjayBmaXJzdCBzaW5jZSBhIGRldmljZSBkcml2ZXIgd291bGQgYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQgaWYgc2VyaWFsIHBvcnRzIGFyZSBiZWluZyB1c2VkIGFzIGEgc291cmNlIGZvciBNSURJLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBJIG5lZWQgdG8gY29uc2lkZXIgd2h5IHRoZXNlIGFyZSBiZWluZyBpZGVudGlmaWVkIGFzIGF1ZGlvIGRldmljZXMgYXQgYWxsIGFuZCBub3QganVzdCByYXcgc2VyaWFsIHBvcnRzIGFuZCBwb3J0IG1hbmFnZXJzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY29uc2lkZXIgd2hhdCBpcyBuZWVkZWQgZm9yIHRoaXMgaW4gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfTVRTNjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzb3VuZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvZHJpdmVycy9LY29uZmlnPTE0Nj1jb25maWcgU05EX01UUEFWXG4tLVxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1Ny1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxNTg6Y29uZmlnIFNORF9NVFM2NFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9QT1JUTUFOMlg0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZz0yMDU9Y29uZmlnIFNORF9NUFU0MDFcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjE1LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjIxNjpjb25maWcgU05EX1BPUlRNQU4yWDRcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtQb3J0bWFuIDJ4NCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9TRVJJQUxfVTE2NTUwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZz0xNTg9Y29uZmlnIFNORF9NVFM2NFxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xNzAtXG5zb3VuZC9kcml2ZXJzL0tjb25maWc6MTcxOmNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE3Mi1cdHRyaXN0YXRlIFwmIzM0O1VBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQXVkaW8gQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBsaXN0IG9mIGF1ZGlvIGNvbmZpZ3VyYXRpb25zOiBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGBTTkRfVklSTUlESWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBTTkRfU09DX0JFTExTYCByaW5ncyBhIGJlbGwsIHB1biBpbnRlbmRlZCEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IG9uZSBvZnRlbiByZWxpZXMgb24gc29tZSB1bmRlcmx5aW5nIE11bHRpLUZ1bmN0aW9uIERldmljZSAoTUZEKSBvciBJMkMgYnVzIGRlcGVuZGVuY2llcy4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4gTmVlZCB0byBhdm9pZCBhbnkgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIGVzcGVjaWFsbHkgd2l0aCB0aGF0IFNvdW5kIE9wZW4gRmlybXdhcmUgKFNPRikgc3R1ZmYgd2UmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRoaXMgc29ydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9zYW1zdW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XHRkZXBlbmRzIG9uIElOUFVUIFx1MDAyNlx1MDAyNiBJMkNcbiAgNjE6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiAgNjI6XHRcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcbiAgNjM6XHRcdHNlbGVjdCBTTkRfU09DX1dNODk2MlxuICA2NDpcdFxuICA2NTpcdGNvbmZpZyBTTkRfU09DX0JFTExTXG4gIDY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXCYjMzQ7XG4gIDY3Olx0XHRkZXBlbmRzIG9uIE1GRF9BUklaT05BIFx1MDAyNlx1MDAyNiBNRkRfV001MTAyIFx1MDAyNlx1MDAyNiBNRkRfV001MTEwIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IFNQSV9NQVNURVJcbiAgNjg6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiAgNjk6XHRcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcbiAgNzA6XHRcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxuICA3MTpcdFx0c2VsZWN0IFNORF9TT0NfV001MTEwXG4gIDcyOlx0XHRzZWxlY3QgU05EX1NPQ19XTTkwODFcbiAgNzM6XHRcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxuICA3NDpcdFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxuICA3NTpcdFxuICA3NjpcdGNvbmZpZyBTTkRfU09DX0xPV0xBTkRcbiAgNzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gTG93bGFuZFwmIzM0O1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBJMkNcbiAgNzk6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBdWRpbyBEcml2ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgU05EX1NPQ19CRUxMU2AgYXVkaW8gZHJpdmVyLiBTZWVtcyBsaWtlIGl0IGhhcyBhIHByZXR0eSBzcGVjaWZpYyBkZXBlbmRlbmN5IGNoYWluOiBgTUZEX0FSSVpPTkEgJmFtcDsmYW1wOyBNRkRfV001MTAyICZhbXA7JmFtcDsgTUZEX1dNNTExMCAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IFNQSV9NQVNURVJgLiBJdCYjMzk7cyBsaWtlbHkgYWxyaWdodCB0byBpbmNsdWRlIGl0LCBidXQgdGhlIHByaW1hcnkgYXVkaW8gZHJpdmVycyBJJiMzOTtkIGxlYW4gdG93YXJkcyByaWdodCBub3cgYXJlIGBTTkRfRFVNTVlgLCBgU05EX0FMT09QYCwgYW5kIGBTTkRfVklSTUlESWAuIEFsd2F5cyBnb29kIHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHF1aXJrcy4gTGV0IG1lIGRpZyBpbnRvIGBTTkRfRFVNTVlgIGFuZCBtYWtlIHN1cmUgaXQgZG9lc24mIzM5O3QgaGF2ZSBhbnkgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0XHQgIFlvdSBkb24mIzM5O3QgbmVlZCB0aGlzIGRyaXZlciBpZiB5b3Ugb25seSB3YW50IHlvdXIgcGMtc3BlYWtlciB0byBiZWVwLlxuICA3MjpcdFx0ICBZb3UgZG9uJiMzOTt0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IGhhdmUgYSB0YWJsZXQgcGllem8gYmVlcGVyXG4gIDczOlx0XHQgIGluIHlvdXIgUEMgaW5zdGVhZCBvZiB0aGUgcmVhbCBzcGVha2VyLlxuICA3NDpcdFxuICA3NTpcdFx0ICBTYXkgTiBpZiB5b3UgaGF2ZSBhIHNvdW5kIGNhcmQuXG4gIDc2Olx0XHQgIFNheSBNIGlmIHlvdSBkb24mIzM5O3QuXG4gIDc3Olx0XHQgIFNheSBZIG9ubHkgaWYgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGRvLlxuICA3ODpcdFxuICA3OTpcdGNvbmZpZyBTTkRfRFVNTVlcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O0R1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFwmIzM0O1xuICA4MTpcdFx0c2VsZWN0IFNORF9QQ01cbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHRoZSBkdW1teSBkcml2ZXIuICBUaGlzIGRyaXZlciBkb2VzXG4gIDg0Olx0XHQgIG5vdGhpbmcsIGJ1dCBlbXVsYXRlcyB2YXJpb3VzIG1peGVyIGNvbnRyb2xzIGFuZCBQQ00gZGV2aWNlcy5cbiAgODU6XHRcbiAgODY6XHRcdCAgWW91IGRvbiYjMzk7dCBuZWVkIHRoaXMgdW5sZXNzIHlvdSYjMzk7cmUgdGVzdGluZyB0aGUgaGFyZHdhcmUgc3VwcG9ydFxuICA4NzpcdFx0ICBvZiBwcm9ncmFtcyB1c2luZyB0aGUgQUxTQSBBUEkuXG4gIDg4Olx0XG4gIDg5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgOTA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWR1bW15LlxuICA5MTpcdFxuICA5MjpcdGNvbmZpZyBTTkRfQUxPT1BcbiAgOTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgbG9vcGJhY2sgZHJpdmVyIChQQ00pXCYjMzQ7XG4gIDk0Olx0XHRzZWxlY3QgU05EX1BDTVxuICA5NTpcdFx0c2VsZWN0IFNORF9USU1FUlxuICA5NjpcdFx0aGVscFxuICA5NzpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUENNIGxvb3BiYWNrIGRldmljZS5cbiAgOTg6XHRcdCAgVGhpcyBtb2R1bGUgcmV0dXJucyBwbGF5ZWQgc2FtcGxlcyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlIHVzaW5nXG4gIDk5Olx0XHQgIHRoZSBzdGFuZGFyZCBBTFNBIFBDTSBkZXZpY2UuIFRoZSBkZXZpY2VzIGFyZSByb3V0ZWQgMC1cdTAwM2UxIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNvdW5kIERyaXZlcnMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGFuZCBgU05EX1ZJUk1JRElgIGFyZSBhbGwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgZ2VuZXJpYyBzb3VuZCBkcml2ZXJzIHRoYXQgZG9uJiMzOTt0IHRpZSB0aGVtc2VsdmVzIHRvIGFueSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGF0JiMzOTtzIGdvb2QsIGtlZXBzIHRoaW5ncyBmbGV4aWJsZS4gQW5kIGBTTkRfTVBVNDAxYCBzZWVtcyB0byBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBhcyB3ZWxsLiBUaGVuIHdlIGhhdmUgYFNORF9NVFM2NGAuIFRoYXQgb25lJiMzOTtzIGdvdCBhIGRlcGVuZGVuY3ksIHRob3VnaC4gSXQmIzM5O3MgY29ubmVjdGVkIHRvIGBQQVJQT1JUYC4gQWxyaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIG9uIHRoYXQgYFBBUlBPUlRgIGRlcGVuZGVuY3kgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGF0JiMzOTtzIGFsbCBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0aGVscFxuIDE1MTpcdFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxuIDE1MjpcdFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XG4gMTUzOlx0XHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24mIzM5O3QgdXNlZCBmb3IgdGhlIHBvcnQuXG4gMTU0Olx0XG4gMTU1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLW10cGF2LlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBTTkRfTVRTNjRcbiAxNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiAxNjA6XHRcdGRlcGVuZHMgb24gUEFSUE9SVFxuIDE2MTpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTYyOlx0XHRoZWxwXG4gMTYzOlx0XHQgIFRoZSBFU0kgTWlkaXRlcm1pbmFsIDQxNDAgaXMgYSA0IEluIDQgT3V0IE1JREkgSW50ZXJmYWNlIHdpdGggXG4gMTY0Olx0XHQgIGFkZGl0aW9uYWwgU01QVEUgVGltZWNvZGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydC5cbiAxNjU6XHRcbiAxNjY6XHRcdCAgU2F5ICYjMzk7WSYjMzk7IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhpcyBkZXZpY2UuXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICYjMzk7TSYjMzk7IGhlcmU6IHRoZSBtb2R1bGUgXG4gMTY5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHM2NC5cbiAxNzA6XHRcbiAxNzE6XHRjb25maWcgU05EX1NFUklBTF9VMTY1NTBcbiAxNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1VBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcJiMzNDtcbiAxNzM6XHRcdGRlcGVuZHMgb24gSEFTX0lPUE9SVFxuIDE3NDpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgTUlESSBzZXJpYWwgcG9ydCBpbnRlcmZhY2VzLCBzYXkgWSBoZXJlXG4gMTc3Olx0XHQgIGFuZCByZWFkIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9zZXJpYWwtdTE2NTUwLnJzdFx1MDAzZS5cbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBzZXJpYWwgVUFSVHMgMTY1NTAgYW5kIGJldHRlci5cbiAxNzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgVnVsbmVyYWJpbGl0aWVzIGluIFNvdW5kIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YCBib3RoIHJlbHkgb24gYFBBUlBPUlRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYCBuZWVkcyBgSEFTX0lPUE9SVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHRoZXNlIHNwZWNpZmljIHNvdW5kIGRyaXZlcnMuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGRldnB0ci0mZ3Q7aWRgIChvciBgcGRldi0mZ3Q7aWRgKSBpcyBzb21ldGltZXMgZXhjZWVkaW5nIHRoZSBib3VuZHMgb2YgdGhlIGBTTkRSVl9DQVJEU2AgYXJyYXksIHdoaWNoIGlzIHR5cGljYWxseSBvZiBzaXplIDguCgpUaGUgcmVhbCBraWNrZXIgaXMgdGhhdCBpZiBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgb3IgZ2VuZXJhdGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIGl04oCZcyBnb2luZyB0byBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBleHBsb2l0YWJsZS4gVGhhdCYjMzk7cyBhIHBlcmZlY3QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGxpc3QgdG8gc3RhcnQgd2l0aC4KCkkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IGludmVzdGlnYXRlOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFdhaXQsIG5vdyB0aGF0IEkgbG9vayBhdCBgU05EX1NPQ19CRUxMU2AsIGl0IGhhcyBhIGJ1bmNoIG9mIGRlcGVuZGVuY2llczogYE1GRF9BUklaT05BICZhbXA7JmFtcDsgTUZEX1dNNTEwMiAmYW1wOyZhbXA7IE1GRF9XTTUxMTAgJmFtcDsmYW1wOyBJMkMgJmFtcDsmYW1wOyBTUElfTUFTVEVSYC4gU3l6a2FsbGVyIG1pZ2h0IGJhbGsgYXQgdGhhdC4gSXQgbWlnaHQgYmUgc2ltcGxlciB0byBqdXN0IGluY2x1ZGUgYFNORF9TT0NfQkVMTFNgIGFuZCBob3BlIGl0IGZpZ3VyZXMgaXQgb3V0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgU05EX1ZJUk1JRElgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvZHJpdmVycy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcbiAxMjE6XHRcdCAgSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBvciBwYXR0ZXJuLWJhc2VkIGRhdGEgaW50byB0aGUgY2FwdHVyZSBzdHJlYW0sXG4gMTIyOlx0XHQgIGNoZWNrIHRoZSBwbGF5YmFjayBzdHJlYW0gZm9yIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIHBhdHRlcm4sIGluamVjdFxuIDEyMzpcdFx0ICB0aW1lIGRlbGF5cyBkdXJpbmcgY2FwdHVyZS9wbGF5YmFjaywgcmVkZWZpbmUgdGhlIFJFU0VUIGlvY3RsIG9wZXJhdGlvblxuIDEyNDpcdFx0ICB0byBwZXJmb3JtIHRoZSBQQ00gbWlkZGxlIGxheWVyIHRlc3RpbmcgYW5kIGluamVjdCBlcnJvcnMgZHVyaW5nIHRoZVxuIDEyNTpcdFx0ICBQQ00gY2FsbGJhY2tzLiBJdCBzdXBwb3J0cyBib3RoIGludGVybGVhdmVkIGFuZCBub24taW50ZXJsZWF2ZWQgYWNjZXNzXG4gMTI2Olx0XHQgIG1vZGVzLiBZb3UgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZnRlc3QgaW4gdGhlICYjMzk7YWxzYSYjMzk7XG4gMTI3Olx0XHQgIHNlbGZ0ZXN0cyBmb2xkZXIuXG4gMTI4Olx0XG4gMTI5Olx0Y29uZmlnIFNORF9WSVJNSURJXG4gMTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIE1JREkgc291bmRjYXJkXCYjMzQ7XG4gMTMxOlx0XHRkZXBlbmRzIG9uIFNORF9TRVFVRU5DRVJcbiAxMzI6XHRcdHNlbGVjdCBTTkRfVElNRVJcbiAxMzM6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDEzNDpcdFx0c2VsZWN0IFNORF9TRVFfVklSTUlESVxuIDEzNTpcdFx0c2VsZWN0IFNORF9TRVFfTUlESV9FVkVOVFxuIDEzNjpcdFx0aGVscFxuIDEzNzpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgdGhlIHZpcnR1YWwgTUlESSBkcml2ZXIuICBUaGlzIGRyaXZlclxuIDEzODpcdFx0ICBhbGxvd3MgdG8gY29ubmVjdCBhcHBsaWNhdGlvbnMgdXNpbmcgcmF3IE1JREkgZGV2aWNlcyB0b1xuIDEzOTpcdFx0ICBzZXF1ZW5jZXIgY2xpZW50cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBDaGVja2luZyBmb3IgU291bmQgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbW1lZGlhdGVseSBhIGNvbm5lY3Rpb24gY2xpY2tzOiBgU05EX1ZJUk1JRElgIHJlbGllcyBvbiBgU05EX1NFUVVFTkNFUmAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdmlydHVhbCBNSURJIG5lZWRzIHRoZSBzZXF1ZW5jZXIgaW5mcmFzdHJ1Y3R1cmUgdG8gZnVuY3Rpb24uIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgcmVsYXRpb25zaGlwIGlzIHNvdW5kLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBTTkRfTVBVNDAxYCBuZXh0LCBhcyB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIGluIHRoaXMgc291bmQgcHV6emxlIGFuZCBsaWtlbHkgdG8gaGF2ZSBpbXBsaWNhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRob3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NlcmlhbC1taWRpLnlhbWxcdTAwM2VcbiAyMDE6XHRcbiAyMDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIwMzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtc2VyaWFsLWdlbmVyaWMuXG4gMjA0Olx0XG4gMjA1Olx0Y29uZmlnIFNORF9NUFU0MDFcbiAyMDY6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclwmIzM0O1xuIDIwNzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9QT1JUXG4gMjA4Olx0XHRzZWxlY3QgU05EX01QVTQwMV9VQVJUXG4gMjA5Olx0XHRoZWxwXG4gMjEwOlx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNSURJIHBvcnRzIGNvbXBhdGlibGUgd2l0aFxuIDIxMTpcdFx0ICB0aGUgUm9sYW5kIE1QVS00MDEgaW50ZXJmYWNlIGluIFVBUlQgbW9kZS5cbiAyMTI6XHRcbiAyMTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIxNDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXB1NDAxLlxuIDIxNTpcdFxuIDIxNjpcdGNvbmZpZyBTTkRfUE9SVE1BTjJYNFxuIDIxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UG9ydG1hbiAyeDQgZHJpdmVyXCYjMzQ7XG4gMjE4Olx0XHRkZXBlbmRzIG9uIFBBUlBPUlRcbiAyMTk6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGRlcGVuZGVuY2llcywgcGhyYXNlZCBhcyBpZiB0aGV5JiMzOTtyZSBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3MuCgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgbWFwIGlzIHRlbGxpbmcgbWUgdGhhdCB0aGUgc291bmQgbW9kdWxlIGBTTkRfTVBVNDAxYCBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYEhBU19JT1BPUlRgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGNsYXNzaWMgTUlESSBpbnRlcmZhY2UsIG5lZWRzIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhlbiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBTTkRfUE9SVE1BTjJYNGAsIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGRlcGVuZGVudCBvbiBgUEFSUE9SVGAgLSBtZWFuaW5nIHBhcmFsbGVsIHBvcnQuIFRoYXQmIzM5O3MgYSBiaXQgbGVzcyBjb21tb24gbm93YWRheXMsIGJ1dCBhZ2FpbiwgY29tcGxldGVseSBsb2dpY2FsLiBJdCB3b3VsZG4mIzM5O3QgZnVuY3Rpb24gd2l0aG91dCB0aGUgcGFyYWxsZWwgcG9ydC4gT2theSwgSSYjMzk7dmUgZ290IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biwgd2hpY2ggaXMgZ29vZCBob3VzZWtlZXBpbmcgZm9yIHRoZSBjdXJyZW50IHByb2plY3QuIE5vdyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBgU05EX01UUzY0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0aGVscFxuIDE1MTpcdFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxuIDE1MjpcdFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XG4gMTUzOlx0XHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24mIzM5O3QgdXNlZCBmb3IgdGhlIHBvcnQuXG4gMTU0Olx0XG4gMTU1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLW10cGF2LlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBTTkRfTVRTNjRcbiAxNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiAxNjA6XHRcdGRlcGVuZHMgb24gUEFSUE9SVFxuIDE2MTpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTYyOlx0XHRoZWxwXG4gMTYzOlx0XHQgIFRoZSBFU0kgTWlkaXRlcm1pbmFsIDQxNDAgaXMgYSA0IEluIDQgT3V0IE1JREkgSW50ZXJmYWNlIHdpdGggXG4gMTY0Olx0XHQgIGFkZGl0aW9uYWwgU01QVEUgVGltZWNvZGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydC5cbiAxNjU6XHRcbiAxNjY6XHRcdCAgU2F5ICYjMzk7WSYjMzk7IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhpcyBkZXZpY2UuXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICYjMzk7TSYjMzk7IGhlcmU6IHRoZSBtb2R1bGUgXG4gMTY5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHM2NC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBzb3VuZCBkZXZpY2UgY29uZmlndXJhdGlvbnMgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBTTkRfTVRTNjRgIHJlbGllcyBvbiBgUEFSUE9SVGAuIEFscmlnaHQsIHRoYXQmIzM5O3Mgbm90IHVuZXhwZWN0ZWQ7IHRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvZnRlbiBjcm9wIHVwLgoKU28sIGluIG9yZGVyIHRvIGdldCBgU05EX01UUzY0YCB0byB3b3JrIGNvcnJlY3RseSwgSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGVuYWJsZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX1ZJUk1JRElgLCBgU05EX1NFUVVFTkNFUmAsIGBTTkRfTVBVNDAxYCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFBBUlBPUlRgIGFuZCBgU05EX1NPQ19CRUxMU2AuIFRoYXQgYWxsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIGF0IGxlYXN0IGluaXRpYWxseS4KCkJ1dCB3YWl0IGEgbWludXRlLCBgU05EX1NPQ19CRUxMU2AgaXMgbGlrZWx5IHRvIGhhdmUgYSBidW5jaCBvZiBpdHMgb3duIGRlcGVuZGVuY2llcyBJJiMzOTtsbCBuZWVkIHRvIHNvcnQgb3V0LCBvciBhdCBsZWFzdCBiZSBhd2FyZSBvZi4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYHNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWdgLiBHb29kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvc29jL3NhbXN1bmcvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdGRlcGVuZHMgb24gSU5QVVQgXHUwMDI2XHUwMDI2IEkyQ1xuICA2MTpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuICA2MjpcdFx0c2VsZWN0IFNORF9TQU1TVU5HX0kyU1xuICA2MzpcdFx0c2VsZWN0IFNORF9TT0NfV004OTYyXG4gIDY0Olx0XG4gIDY1Olx0Y29uZmlnIFNORF9TT0NfQkVMTFNcbiAgNjY6XHRcdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gQmVsbHNcJiMzNDtcbiAgNjc6XHRcdGRlcGVuZHMgb24gTUZEX0FSSVpPTkEgXHUwMDI2XHUwMDI2IE1GRF9XTTUxMDIgXHUwMDI2XHUwMDI2IE1GRF9XTTUxMTAgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgU1BJX01BU1RFUlxuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuICA2OTpcdFx0c2VsZWN0IFNORF9TQU1TVU5HX0kyU1xuICA3MDpcdFx0c2VsZWN0IFNORF9TT0NfV001MTAyXG4gIDcxOlx0XHRzZWxlY3QgU05EX1NPQ19XTTUxMTBcbiAgNzI6XHRcdHNlbGVjdCBTTkRfU09DX1dNOTA4MVxuICA3MzpcdFx0c2VsZWN0IFNORF9TT0NfV00wMDEwXG4gIDc0Olx0XHRzZWxlY3QgU05EX1NPQ19XTTEyNTBfRVYxXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIFNORF9TT0NfTE9XTEFORFxuICA3NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEkyQ1xuICA3OTpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipEZXBlbmRlbmNpZXMgYW5kIEluY2x1c2lvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gYFNORF9TT0NfQkVMTFNgIG5lZWRzIHNldmVyYWwgb3RoZXIgbW9kdWxlcyB0byBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCByZWxpZXMgb24gYE1GRF9BUklaT05BYCwgYE1GRF9XTTUxMDJgLCBgTUZEX1dNNTExMGAsIHRoZSBgSTJDYCBpbnRlcmZhY2UsIGFuZCB0aGUgYFNQSV9NQVNURVJgIGludGVyZmFjZS4gSG1tLCBnaXZlbiB0aGF0IGRlcGVuZGVuY3kgdHJlZSwgSSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBNRkRfQVJJWk9OQWAsIGBNRkRfV001MTAyYCwgYW5kIGBNRkRfV001MTEwYC4gVGhleSYjMzk7cmUgaW50ZWdyYWwsIGFuZCBJIGNhbiYjMzk7dCBzZWUgYSBjbGVhbiB3YXkgYXJvdW5kIHRoYXQuIE1ha2VzIHNlbnNlLgoKTm93LCBsZXQgbWUgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYE1GRF9BUklaT05BYCBtb2R1bGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0IG9uZSwgZXNwZWNpYWxseSBpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRkRfQVJJWk9OQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWZkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21mZC9LY29uZmlnPTIwNTQ9Y29uZmlnIE1GRF9WWDg1NVxuLS1cbmRyaXZlcnMvbWZkL0tjb25maWctMjA2Mi1cbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2Mzpjb25maWcgTUZEX0FSSVpPTkFcbmRyaXZlcnMvbWZkL0tjb25maWctMjA2NC1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNjgtXG5kcml2ZXJzL21mZC9LY29uZmlnOjIwNjk6Y29uZmlnIE1GRF9BUklaT05BX0kyQ1xuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDcwLVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljL1dvbGZzb24gTWljcm9lbGVjdHJvbmljcyBBcml6b25hIHBsYXRmb3JtIHdpdGggSTJDXCYjMzQ7XG4tLVxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDc3LVxuZHJpdmVycy9tZmQvS2NvbmZpZzoyMDc4OmNvbmZpZyBNRkRfQVJJWk9OQV9TUElcbmRyaXZlcnMvbWZkL0tjb25maWctMjA3OS1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBMb2dpYy9Xb2xmc29uIE1pY3JvZWxlY3Ryb25pY3MgQXJpem9uYSBwbGF0Zm9ybSB3aXRoIFNQSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3NAoJCQkJCQkJb3V0cHV0OiAyOTAKCQkJCQkJCXRob3VnaHRzOiA3OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgYW5kIEltcG9ydGFuY2Ugb2YgU291bmQgRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFmdGVyIHRoaXMgcGF0Y2gsIHdoaWNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNrcyBvbiBwbGF0Zm9ybSBkZXZpY2UgSURzIHdpdGhpbiBzb3VuZCBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgaW5jbHVkZSBgU05EX1NPQ19CRUxMU2AgYW5kIGxldCB0aGUgZnV6emVyIHNvcnQgb3V0IGRlcGVuZGVuY2llcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VjY2Vzc2Z1bCBmdXp6aW5nLCBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGFuZCBgU05EX1ZJUk1JRElgIHNlZW0gbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBzaW5jZSB0aGV5JiMzOTtyZSBsZXNzIGhhcmR3YXJlLWRlcGVuZGVudC4KCkkgZGVjaWRlZCB0byBsaXN0IHRoZSBjb25maWdzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG1vZGlmaWVkIGZpbGVzLiBUaGF0IG1lYW5zIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnMgbmVlZCB0byBiZSBjb25zaWRlcmVkOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGFuZCBgU05EX1NPQ19CRUxMU2AuCgpUaGUgY29ycmVzcG9uZGluZyBwcm9iZSBmdW5jdGlvbnMgYXJlOiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhleSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBpbml0aWFsbHkgcmFpc2VkIGEgZmxhZyBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBIb3dldmVyLCB0aGVzZSBhcmUgKnByb2JlKiBmdW5jdGlvbnMsIHNvIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gdG8gYmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIHBsYXRmb3JtIGRyaXZlciBzdHJ1Y3QsIG1ha2luZyB0aGVtIG5vbi1pbmxpbmVkIGFuZCBoYXZpbmcgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhpcyBpcyBwZXJmZWN0bHkgYWNjZXB0YWJsZTsgaXQmIzM5O3MgdGhlIGNvcnJlY3QgYXBwcm9hY2ggdG8gbGlzdCB0aGVtLiBJIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhlc2Ugc3RhdGljIHByb2Jlcy4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIHRoZSByZWFzb25pbmc6IHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBmdW5jdGlvbmFsIGJ1Zywgc3BlY2lmaWNhbGx5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gcHJvYmUgZnVuY3Rpb25zIHdoZW4gZGVhbGluZyB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0ZWQgcGxhdGZvcm0gZGV2aWNlcy4gU2luY2UgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCB2aXJ0dWFsbHksIGl0JiMzOTtzIGRlZmluaXRlbHkgZnV6emFibGUsIGFuZCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0LgoKRmluYWxseSwgSSBjaGVja2VkIGZvciBkZXBlbmRlbmNpZXMgYW5kIHJlbWVtYmVyZWQgdG8gYWRkIHRoZSBuZWNlc3NhcnkgY29uZmlncy4gYFNORF9TRVFVRU5DRVJgIGlzIHJlcXVpcmVkIGZvciBgU05EX1ZJUk1JRElgLCBhbmQgYFBBUlBPUlRgIGlzIG5lZWRlZCBmb3IgYm90aCBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YC4gSSYjMzk7bSBhbHNvIGF3YXJlIHRoYXQgYEhBU19JT1BPUlRgIGlzIG5lZWRlZCBmb3IgYFNORF9NUFU0MDFgIGFuZCBgU05EX1NFUklBTF9VMTY1NTBgLCB3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBvbiB4ODYsIHdoaWNoIGlzIGdvb2QuCgpTbywgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiBjb25maWdzIGZvciBmdXp6aW5nIGlzOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGBTTkRfU09DX0JFTExTYCwgYFNORF9TRVFVRU5DRVJgLCBhbmQgYFBBUlBPUlRgLgoKTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDozOC4zNDg2NjQ0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzIwNjM2MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNORF9BTE9PUFwiLFxuICAgIFwiU05EX0RVTU1ZXCIsXG4gICAgXCJTTkRfTVBVNDAxXCIsXG4gICAgXCJTTkRfTVRTNjRcIixcbiAgICBcIlNORF9QT1JUTUFOMlg0XCIsXG4gICAgXCJTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICAgIFwiU05EX1ZJUk1JRElcIixcbiAgICBcIlNORF9TT0NfQkVMTFNcIixcbiAgICBcIlNORF9TRVFVRU5DRVJcIixcbiAgICBcIlBBUlBPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wYmFja19wcm9iZVwiLFxuICAgIFwic25kX2R1bW15X3Byb2JlXCIsXG4gICAgXCJzbmRfbXB1NDAxX3Byb2JlXCIsXG4gICAgXCJzbmRfbXRzNjRfcHJvYmVcIixcbiAgICBcInNuZF9wb3J0bWFuX3Byb2JlXCIsXG4gICAgXCJzbmRfc2VyaWFsX3Byb2JlXCIsXG4gICAgXCJzbmRfdmlybWlkaV9wcm9iZVwiLFxuICAgIFwiYmVsbHNfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXIncyBkZXZpY2UgY3JlYXRpb24gcHNldWRvLXN5c2NhbGxzKSwgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNoYW5nZXMgZml4IGEgZnVuY3Rpb25hbCBidWcuIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6MzguMzQ4NjcyNzcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzE4ODIwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYzk5Y2JjZjg5MDc4MGU1MjY2MTI3NjM4ZDUzMzI2OGMyZmE5YTNhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzQ6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9hbG9vcC5jIGIvc291bmQvZHJpdmVycy9hbG9vcC5jXFxuaW5kZXggMDZiZmUwOWVhZTFhMi4uOTUyMGQzNDMxYTJlZSAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcXG4rKysgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcXG5AQCAtMTgwMiw2ICsxODAyLDkgQEAgc3RhdGljIGludCBsb29wYmFja19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBkZXYgPSBkZXZwdHItXFx1MDAzZWlkO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdGVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KFxcdTAwMjZkZXZwdHItXFx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXFxuIFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2R1bW15LmMgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvZHVtbXkuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvZHVtbXkuY1xcbkBAIC0xMDE3LDYgKzEwMTcsOSBAQCBzdGF0aWMgaW50IHNuZF9kdW1teV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBpZHgsIGVycjtcXG4gXFx0aW50IGRldiA9IGRldnB0ci1cXHUwMDNlaWQ7XFxuIFxcbitcXHRpZiAoZGV2IFxcdTAwM2MgMCB8fCBkZXYgXFx1MDAzZT0gU05EUlZfQ0FSRFMpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4gXFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXFx1MDAyNmRldnB0ci1cXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcXG4gXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBzbmRfZHVtbXkpLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXFxuaW5kZXggYzIxN2M0MjdiZjFlMC4uYTUxOWNlOWViOTJmNCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXFxuQEAgLTg5LDYgKzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcXG4gXFx0aW50IGVycjtcXG4gXFx0c3RydWN0IHNuZF9jYXJkICpjYXJkO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdGlmIChwb3J0W2Rldl0gPT0gU05EUlZfQVVUT19QT1JUKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNmRldnB0ci1cXHUwMDNlZGV2LCBcXFwic3BlY2lmeSBwb3J0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvbXRzNjQuYyBiL3NvdW5kL2RyaXZlcnMvbXRzNjQuY1xcbmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0XFxuLS0tIGEvc291bmQvZHJpdmVycy9tdHM2NC5jXFxuKysrIGIvc291bmQvZHJpdmVycy9tdHM2NC5jXFxuQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgaW50IHNuZF9tdHM2NF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbiBcXG4tXFx0aWYgKGRldiBcXHUwMDNlPSBTTkRSVl9DQVJEUylcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0aWYgKCFlbmFibGVbZGV2XSkgXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXFxuaW5kZXggZGNjMDg5OWNmYjk5YS4uMGE3ODE1ODgwOGU3ZCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXFxuQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgaW50IHNuZF9wb3J0bWFuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdHAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XFxuIFxcbi1cXHRpZiAoZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRpZiAoZGV2IFxcdTAwM2MgMCB8fCBkZXYgXFx1MDAzZT0gU05EUlZfQ0FSRFMpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXHRpZiAoIWVuYWJsZVtkZXZdKSBcXG4gXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcXG5pbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXFxuKysrIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcXG5AQCAtODQ2LDYgKzg0Niw5IEBAIHN0YXRpYyBpbnQgc25kX3NlcmlhbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBlcnI7XFxuIFxcdGludCBkZXYgPSBkZXZwdHItXFx1MDAzZWlkO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XFxuIFxcdGNhc2UgU05EUlZfU0VSSUFMX1NPVU5EQ0FOVkFTOlxcbiBcXHRcXHRpbnNbZGV2XSA9IDE7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcXG5pbmRleCBhMjA0ZjQyZDEwMjY1Li4wYTkzMTNlZWI4OThhIDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jXFxuKysrIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgaW50IHNuZF92aXJtaWRpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcXG4gXFx0aW50IGlkeCwgZXJyO1xcbiBcXHRpbnQgZGV2ID0gZGV2cHRyLVxcdTAwM2VpZDtcXG4gXFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwIHx8IGRldiBcXHUwMDNlPSBTTkRSVl9DQVJEUylcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcXHUwMDI2ZGV2cHRyLVxcdTAwM2VkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLFxcbiBcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IHNuZF9jYXJkX3Zpcm1pZGkpLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jIGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xcbmluZGV4IGZjNDk2M2QzYjk5YmYuLjNhMDM1MjQ5OTJiZjcgMTAwNjQ0XFxuLS0tIGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xcbisrKyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmNcXG5AQCAtNDcwLDYgKzQ3MCw5IEBAIHN0YXRpYyBpbnQgYmVsbHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0aWYgKHBkZXYtXFx1MDAzZWlkIFxcdTAwM2MgMCB8fCBwZGV2LVxcdTAwM2VpZCBcXHUwMDNlPSBBUlJBWV9TSVpFKGJlbGxzX2NhcmRzKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRiZWxsc19jYXJkc1twZGV2LVxcdTAwM2VpZF0uZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gXFxuIFxcdHJldCA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9jYXJkKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiZWxsc19jYXJkc1twZGV2LVxcdTAwM2VpZF0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDozOC43ODExOTY0ODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NzI4ODA5MjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTkRfQUxPT1BcIixcbiAgICBcIlNORF9EVU1NWVwiLFxuICAgIFwiU05EX01QVTQwMVwiLFxuICAgIFwiU05EX01UUzY0XCIsXG4gICAgXCJTTkRfUE9SVE1BTjJYNFwiLFxuICAgIFwiU05EX1NFUklBTF9VMTY1NTBcIixcbiAgICBcIlNORF9WSVJNSURJXCIsXG4gICAgXCJTTkRfU09DX0JFTExTXCIsXG4gICAgXCJTTkRfU0VRVUVOQ0VSXCIsXG4gICAgXCJQQVJQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcGJhY2tfcHJvYmVcIixcbiAgICBcInNuZF9kdW1teV9wcm9iZVwiLFxuICAgIFwic25kX21wdTQwMV9wcm9iZVwiLFxuICAgIFwic25kX210czY0X3Byb2JlXCIsXG4gICAgXCJzbmRfcG9ydG1hbl9wcm9iZVwiLFxuICAgIFwic25kX3NlcmlhbF9wcm9iZVwiLFxuICAgIFwic25kX3Zpcm1pZGlfcHJvYmVcIixcbiAgICBcImJlbGxzX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJ3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJjOTljYmNmODkwNzgwZTUyNjYxMjc2MzhkNTMzMjY4YzJmYTlhM2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM0OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9hbG9vcC5jIGIvc291bmQvZHJpdmVycy9hbG9vcC5jXG5pbmRleCAwNmJmZTA5ZWFlMWEyLi45NTIwZDM0MzFhMmVlIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9hbG9vcC5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbkBAIC0xODAyLDYgKzE4MDIsOSBAQCBzdGF0aWMgaW50IGxvb3BiYWNrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXHRpbnQgZXJyO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9kdW1teS5jIGIvc291bmQvZHJpdmVycy9kdW1teS5jXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcbkBAIC0xMDE3LDYgKzEwMTcsOSBAQCBzdGF0aWMgaW50IHNuZF9kdW1teV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXG4gXHRpbnQgaWR4LCBlcnI7XG4gXHRpbnQgZGV2ID0gZGV2cHRyLVx1MDAzZWlkO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgc25kX2R1bW15KSwgXHUwMDI2Y2FyZCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbmluZGV4IGMyMTdjNDI3YmYxZTAuLmE1MTljZTllYjkyZjQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuY1xuKysrIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBpbnQgc25kX21wdTQwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXG4gXHRpbnQgZXJyO1xuIFx0c3RydWN0IHNuZF9jYXJkICpjYXJkO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRpZiAocG9ydFtkZXZdID09IFNORFJWX0FVVE9fUE9SVCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNmRldnB0ci1cdTAwM2VkZXYsIFwic3BlY2lmeSBwb3J0XFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL210czY0LmMgYi9zb3VuZC9kcml2ZXJzL210czY0LmNcbmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL210czY0LmNcbisrKyBiL3NvdW5kL2RyaXZlcnMvbXRzNjQuY1xuQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgaW50IHNuZF9tdHM2NF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXG4tXHRpZiAoZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4rXHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5pbmRleCBkY2MwODk5Y2ZiOTlhLi4wYTc4MTU4ODA4ZTdkIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmNcbisrKyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5AQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyBpbnQgc25kX3BvcnRtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuIFxuLVx0aWYgKGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRpZiAoIWVuYWJsZVtkZXZdKSBcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuY1xuaW5kZXggM2MyODk2MTA5MWIxMi4uYWVjMDJhMTVhYmM5OCAxMDA2NDRcbi0tLSBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuY1xuQEAgLTg0Niw2ICs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4rXHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XG4gXHRjYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzpcbiBcdFx0aW5zW2Rldl0gPSAxO1xuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbmluZGV4IGEyMDRmNDJkMTAyNjUuLjBhOTMxM2VlYjg5OGEgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuY1xuKysrIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBpbnQgc25kX3Zpcm1pZGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGlkeCwgZXJyO1xuIFx0aW50IGRldiA9IGRldnB0ci1cdTAwM2VpZDtcbiBcbitcdGlmIChkZXYgXHUwMDNjIDAgfHwgZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXG4gXHRcdFx0XHRzaXplb2Yoc3RydWN0IHNuZF9jYXJkX3Zpcm1pZGkpLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuYyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmNcbmluZGV4IGZjNDk2M2QzYjk5YmYuLjNhMDM1MjQ5OTJiZjcgMTAwNjQ0XG4tLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG4rKysgYi9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG5AQCAtNDcwLDYgKzQ3MCw5IEBAIHN0YXRpYyBpbnQgYmVsbHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKHBkZXYtXHUwMDNlaWQgXHUwMDNjIDAgfHwgcGRldi1cdTAwM2VpZCBcdTAwM2U9IEFSUkFZX1NJWkUoYmVsbHNfY2FyZHMpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGJlbGxzX2NhcmRzW3BkZXYtXHUwMDNlaWRdLmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIFxuIFx0cmV0ID0gZGV2bV9zbmRfc29jX3JlZ2lzdGVyX2NhcmQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJlbGxzX2NhcmRzW3BkZXYtXHUwMDNlaWRdKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjM4Ljc4MTE5Nzk1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTc4NTkzOTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgQXNzZXNzbWVudCBmb3IgU291bmQgRHJpdmVyIFByb2JlIEZ1bmN0aW9uIEJvdW5kcyBDaGVja3MqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gYGRldnB0ci1cdTAwM2VpZGAgKG9yIGBwZGV2LVx1MDAzZWlkYCAtIGl0J3MgdGhlIHNhbWUgdGhpbmcgaGVyZSwgcmlnaHQ/KSB3aXRoaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBjaGVja3MgYXJlICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBkcml2ZXIgYmluZGluZyDigJMgdGhhdCdzIGEga2V5IGRldGFpbCB0byBrZWVwIGluIG1pbmQuXG5cbldlJ3JlIGxvb2tpbmcgYXQgZHJpdmVycyBsaWtlIGBhbG9vcC5jYCwgYGR1bW15LmNgLCBhbmQgYHZpcm1pZGkuY2AsIGFsbCBvZiB3aGljaCBhcmUgdmlydHVhbCBzb3VuZCBkcml2ZXJzIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBsb2FkZWQgYW5kIHByb2JlZC4gU28sIHllYWgsIHRoaXMgc2VlbXMgcG90ZW50aWFsbHkgZnV6emFibGUuIEJ1dCB3YWl0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGJlIHByZWNpc2UuIFRoZSBjaGVjayBpcyBzcGVjaWZpY2FsbHkgb24gYGRldnB0ci1cdTAwM2VpZGAsIHdoaWNoLCBpbiB0aGlzIGNvbnRleHQsIGlzIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQuXG5cblRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gY29udHJvbCBvciBpbmZsdWVuY2UgdGhpcyBJRC4gQ2FuIHdlIGZ1enogcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgY3JlYXRpbmcgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHM/IFRoZSBwYXRjaCBzYXlzIHRoZXNlIGFyZSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIHdoZW4gYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gdGhlIGRyaXZlci4gU3l6a2FsbGVyLCB3aXRoIGl0cyBgc3l6X2Rldl9jcmVhdGVgIG9yIHN5c2ZzIG1hbmlwdWxhdGlvbiBvciBtb2R1bGUgcGFyYW1ldGVycywgY291bGQgcG90ZW50aWFsbHkgYWNoaWV2ZSB0aGlzLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSAnd29ydGggZnV6emluZycgY3JpdGVyaWEuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgb3IgZm9yIGAucmVtb3ZlYCBvciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLiBUaGlzIGlzICpwcm9iZSogY29kZSwgbm90IHJlbW92ZSBjb2RlLiBQcm9iZSBmdW5jdGlvbnMgYXJlIHRyaWdnZXJlZCBieSB0aGUgZHJpdmVyIGJpbmQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYSBwcm9iZSBmdW5jdGlvbiB0aGF0IGNvdWxkIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBxdWVzdGlvbiBpcywgaWYgaXQncyByZWFjaGFibGUgYW5kIHdlJ3JlIHByZXZlbnRpbmcgYW4gT09CLCBpcyB0aGlzIGEgZ29vZCBjYW5kaWRhdGU/IFllcywgaXQgaXMgd29ydGggZnV6emluZy5cblxuVG8gYmUgZXh0cmEgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gY29uZmlybSB0aGF0IHRoZXNlIGRyaXZlcnMgY2FuIGJlIGVhc2lseSBlbmFibGVkIGFuZCBsb2FkZWQuIExldCdzIHNlZS4uLiBgYWxvb3AuY2AgaXMgYFNORF9BTE9PUGAsIGBkdW1teS5jYCBpcyBgU05EX0RVTU1ZYCwgYHZpcm1pZGkuY2AgaXMgYFNORF9WSVJNSURJYCwgYG1wdTQwMS5jYCBpcyBgU05EX01QVTQwMWAsIGBtdHM2NC5jYCBpcyBgU05EX01UUzY0YCwgYHBvcnRtYW4yeDQuY2AgaXMgYFNORF9QT1JUTUFOMlg0YCwgYHNlcmlhbC11MTY1NTAuY2AgaXMgYFNORF9TRVJJQUxfVTE2NTUwYCwgYW5kIGBiZWxscy5jYCBpcyBgU05EX1NPQ19CRUxMU2AuIEl0IGxvb2tzIGxpa2UgdGhlc2Ugc2hvdWxkIGJlIHJlYWRpbHkgYXZhaWxhYmxlIHZpYSBzb21lIHF1aWNrIGNvbmZpZ3VyYXRpb24uIEknbGwgdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZW0uIERlZmluaXRlbHkgd29ydGggbG9va2luZyBhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjQ5Ljc1OTc5Mzk1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjAzMDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FMT09QXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9Nzk9Y29uZmlnIFNORF9EVU1NWVxcbi0tXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTkxLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo5Mjpjb25maWcgU05EX0FMT09QXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTkzLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGxvb3BiYWNrIGRyaXZlciAoUENNKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NDkuODU1ODMxMDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NDA2MDI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqQXNzZXNzbWVudCBvZiBBdWRpbyBEZXZpY2UgU3VwcG9ydCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY3VycmVudCBzdGF0dXMgb2Ygc3VwcG9ydCBmb3IgYSBmZXcgc3BlY2lmaWMgYXVkaW8gZGV2aWNlcyBpbiB0aGUgc3lzdGVtLiBJJ20gZ29pbmcgdG8gcnVuIHRocm91Z2ggdGhlc2UgaW4gbXkgaGVhZCDigJMgbGV0J3Mgc2VlLCBmaXJzdCBgU05EX0RVTU1ZYC4gVGhhdCdzIHRoZSBiYXNpYyBzb3VuZCBkdW1teSBtb2R1bGUsIG5vdCB1c3VhbGx5IHNvbWV0aGluZyBJJ20gYWN0aXZlbHkgY29uY2VybmVkIHdpdGgsIGJ1dCBpdCdzIGdvb2QgdG8ga2VlcCBpdCBpbiBtaW5kLlxuXG5UaGVuLCB0aGVyZSdzIGBTTkRfVklSTUlESWAuIFZpcnR1YWwgTUlESSBpcyBzb21ldGhpbmcgSSBmcmVxdWVudGx5IGhhdmUgdG8gYWNjb3VudCBmb3I7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBpbXBsZW1lbnRlZC4gTmV4dCB1cCwgYFNORF9NUFU0MDFgLiBUaGUgb2xkIE1QVS00MDEgTUlESSBpbnRlcmZhY2Ug4oCTIHN0aWxsIHNlZWluZyB1c2FnZSBpbiBjZXJ0YWluIGVudmlyb25tZW50cy4gSSBoYXZlIHRvIGNoZWNrIGhvdyB0aGUgZHJpdmVycyBhcmUgaG9sZGluZyB1cCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcywgYnV0IEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBmYWlybHkgc3RhYmxlIGF0IHRoaXMgcG9pbnQuXG5cbkZvbGxvd2luZyB0aGF0LCBgU05EX01UUzY0YCwgd2hpY2ggcHJvYmFibHkgbmVlZHMgY2xvc2VyIGluc3BlY3Rpb24uIEkgY2FuIHByZWRpY3QgdGhpcyBvbmUgbWlnaHQgYnJpbmcgdXAgc29tZSBvYnNjdXJlIGlzc3Vlcy4gTm93LCBgU05EX1BPUlRNQU4yWDRgLiBJIG5lZWQgdG8gZW5zdXJlIGEgcG9ydCBtYW5hZ2VyIHNldHVwIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIExldCdzIHNlZSBhYm91dCB0aGUgc2VyaWFsIHBvcnQgaW1wbGVtZW50YXRpb24gbmV4dCB3aXRoIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgdXN1YWxseSBleHBlY3QgdGhpcyBkcml2ZXIgdG8gYmUgc29saWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaW50ZXJydXB0cy5cblxuRmluYWxseSwgYFNORF9TT0NfQkVMTFNgLiBUaGlzIG9uZSBpcyBwcm9iYWJseSBhIFN5c3RlbSBPbiBDaGlwIChTT0MpIHNwZWNpZmljIGRyaXZlciwgc28gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHBsYXRmb3JtIGFuZCBhcmNoaXRlY3R1cmUgdG8gZGV0ZXJtaW5lIGlmIGFueSBzdXBwb3J0IGlzIG5lZWRlZCwgYnV0IEkgc2hvdWxkIGFkZCB0aGF0IHRvIHRoZSBsaXN0IG9mIHRoaW5ncyB0byBrZWVwIGFuIGV5ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxNSwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDo1NC45MDk4OTQ0NDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzMDUzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9EVU1NWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnPTQ5PWNvbmZpZyBTTkRfUENTUFxcbi0tXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTc4LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo3OTpjb25maWcgU05EX0RVTU1ZXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJEdW1teSAoL2Rldi9udWxsKSBzb3VuZGNhcmRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjU1LjAwNDIwMzU5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Njc3NDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1ZJUk1JRElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic291bmQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZz0xMTI9Y29uZmlnIFNORF9QQ01URVNUXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMTI4LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxMjk6Y29uZmlnIFNORF9WSVJNSURJXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBNSURJIHNvdW5kY2FyZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NTUuMTAwOTgzMzg1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTI1NzE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX01QVTQwMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuc291bmQvZHJpdmVycy9LY29uZmlnOjI6Y29uZmlnIFNORF9NUFU0MDFfVUFSVFxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWc9MTg3PWNvbmZpZyBTTkRfU0VSSUFMX0dFTkVSSUNcXG4tLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMDQtXFxuc291bmQvZHJpdmVycy9LY29uZmlnOjIwNTpjb25maWcgU05EX01QVTQwMVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMDYtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NTUuMjMyMjQ2NDcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDE0Mjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1NPQ19CRUxMU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL3NhbXN1bmcvS2NvbmZpZz01OD1jb25maWcgU05EX1NPQ19UT0JFUk1PUllcXG4tLVxcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjQtXFxuc291bmQvc29jL3NhbXN1bmcvS2NvbmZpZzo2NTpjb25maWcgU05EX1NPQ19CRUxMU1xcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcIkF1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gQmVsbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjU1LjMzMjM5NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODkwMzcwMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZXNlIGF1ZGlvIGRldmljZSBpZGVudGlmaWVycy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZW06IGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlc2UgYXMgbGlrZWx5IGJlaW5nIGRldmljZSBkcml2ZXIgbmFtZXMgd2l0aGluIGEgTGludXggc291bmQgc3lzdGVtLCBwcm9iYWJseSBBTFNBLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCBgU05EX01UUzY0YCBzdWdnZXN0cyBzb21lIGtpbmQgb2YgTUlESSBUaW1lIFN0YW1wIGludGVyZmFjZSwgcG9zc2libHkgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGRldmljZSB3aXRoIDY0IGNoYW5uZWxzIG9yIGZlYXR1cmVzIGNvbm5lY3RlZCB0byBhIE11c2ljYWwgVGltZSBTeW5jIHNvdXJjZSwgd2hpbGUgYFNORF9QT1JUTUFOMlg0YCBpcyBhIGJpdCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCwgaW5kaWNhdGluZyBhIHBvcnQgbWFuYWdlciB3aXRoIHR3byBpbnB1dHMgYW5kIGZvdXIgb3V0cHV0cyAtIGFsbW9zdCBjZXJ0YWlubHkgYSBNSURJIGludGVyZmFjZSBsaWtlIGEgVVNCIGRldmljZS4gVGhlIGxhc3Qgb25lLCBgU05EX1NFUklBTF9VMTY1NTBgLCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZS4gVGhlIGBVMTY1NTBgIHN0cm9uZ2x5IGhpbnRzIGF0IGEgbGVnYWN5IHNlcmlhbCBwb3J0IGNvbnRyb2xsZXIsIGFuZCBzbyB0aGlzIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUgdG8gdW5wYWNrIGZpcnN0IHNpbmNlIGEgZGV2aWNlIGRyaXZlciB3b3VsZCBiZSB1c2VkIGluIHRoaXMgY29udGV4dCBpZiBzZXJpYWwgcG9ydHMgYXJlIGJlaW5nIHVzZWQgYXMgYSBzb3VyY2UgZm9yIE1JREkuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIEkgbmVlZCB0byBjb25zaWRlciB3aHkgdGhlc2UgYXJlIGJlaW5nIGlkZW50aWZpZWQgYXMgYXVkaW8gZGV2aWNlcyBhdCBhbGwgYW5kIG5vdCBqdXN0IHJhdyBzZXJpYWwgcG9ydHMgYW5kIHBvcnQgbWFuYWdlcnMuIEknbSBnb2luZyB0byBoYXZlIHRvIGNvbnNpZGVyIHdoYXQgaXMgbmVlZGVkIGZvciB0aGlzIGluIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjb25maWd1cmF0aW9uIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTc1LCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuMjM2MTAxNzkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODY0MjE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX01UUzY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9MTQ2PWNvbmZpZyBTTkRfTVRQQVZcXG4tLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xNTctXFxuc291bmQvZHJpdmVycy9LY29uZmlnOjE1ODpjb25maWcgU05EX01UUzY0XFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuMzM0NzUxMjMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NjU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9QT1JUTUFOMlg0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9MjA1PWNvbmZpZyBTTkRfTVBVNDAxXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjE1LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoyMTY6Y29uZmlnIFNORF9QT1JUTUFOMlg0XFxuc291bmQvZHJpdmVycy9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiUG9ydG1hbiAyeDQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTowNC40Mzg0MjMzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTk4MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnPTE1OD1jb25maWcgU05EX01UUzY0XFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMTcwLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxNzE6Y29uZmlnIFNORF9TRVJJQUxfVTE2NTUwXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE3Mi1cXHR0cmlzdGF0ZSBcXFwiVUFSVDE2NTUwIHNlcmlhbCBNSURJIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuNTYxMDMzMTA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDAzNDE4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEF1ZGlvIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC4gSSdtIGxvb2tpbmcgYXQgdGhpcyBsaXN0IG9mIGF1ZGlvIGNvbmZpZ3VyYXRpb25zOiBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGBTTkRfVklSTUlESWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgYFNORF9TT0NfQkVMTFNgIHJpbmdzIGEgYmVsbCwgcHVuIGludGVuZGVkISBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgb25lIG9mdGVuIHJlbGllcyBvbiBzb21lIHVuZGVybHlpbmcgTXVsdGktRnVuY3Rpb24gRGV2aWNlIChNRkQpIG9yIEkyQyBidXMgZGVwZW5kZW5jaWVzLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseS4gTmVlZCB0byBhdm9pZCBhbnkgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIGVzcGVjaWFsbHkgd2l0aCB0aGF0IFNvdW5kIE9wZW4gRmlybXdhcmUgKFNPRikgc3R1ZmYgd2UndmUgYmVlbiB3b3JraW5nIHdpdGguIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCB0aGlzIHNvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjA4LjcwMTM3ODA1MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdGRlcGVuZHMgb24gSU5QVVQgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfV0xGX0NSQUdHXzY0MTAgfHwgQ09NUElMRV9URVNUXFxuICA2MjpcXHRcXHRzZWxlY3QgU05EX1NBTVNVTkdfSTJTXFxuICA2MzpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTg5NjJcXG4gIDY0OlxcdFxcbiAgNjU6XFx0Y29uZmlnIFNORF9TT0NfQkVMTFNcXG4gIDY2OlxcdFxcdHRyaXN0YXRlIFxcXCJBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXFxcIlxcbiAgNjc6XFx0XFx0ZGVwZW5kcyBvbiBNRkRfQVJJWk9OQSBcXHUwMDI2XFx1MDAyNiBNRkRfV001MTAyIFxcdTAwMjZcXHUwMDI2IE1GRF9XTTUxMTAgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG4gIDY5OlxcdFxcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcXG4gIDcwOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxcbiAgNzE6XFx0XFx0c2VsZWN0IFNORF9TT0NfV001MTEwXFxuICA3MjpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTkwODFcXG4gIDczOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxcbiAgNzQ6XFx0XFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgU05EX1NPQ19MT1dMQU5EXFxuICA3NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDguNzAxNDY1OTkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NjU2MzM0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXVkaW8gRHJpdmVyIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBTTkRfU09DX0JFTExTYCBhdWRpbyBkcml2ZXIuIFNlZW1zIGxpa2UgaXQgaGFzIGEgcHJldHR5IHNwZWNpZmljIGRlcGVuZGVuY3kgY2hhaW46IGBNRkRfQVJJWk9OQSBcdTAwMjZcdTAwMjYgTUZEX1dNNTEwMiBcdTAwMjZcdTAwMjYgTUZEX1dNNTExMCBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSYC4gSXQncyBsaWtlbHkgYWxyaWdodCB0byBpbmNsdWRlIGl0LCBidXQgdGhlIHByaW1hcnkgYXVkaW8gZHJpdmVycyBJJ2QgbGVhbiB0b3dhcmRzIHJpZ2h0IG5vdyBhcmUgYFNORF9EVU1NWWAsIGBTTkRfQUxPT1BgLCBhbmQgYFNORF9WSVJNSURJYC4gQWx3YXlzIGdvb2QgdG8gY2hlY2sgZm9yIGFueSBoaWRkZW4gcXVpcmtzLiBMZXQgbWUgZGlnIGludG8gYFNORF9EVU1NWWAgYW5kIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IGhhdmUgYW55IHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIG9yIGVkZ2UgY2FzZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToxNC41NjcxMDIwMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IG9ubHkgd2FudCB5b3VyIHBjLXNwZWFrZXIgdG8gYmVlcC5cXG4gIDcyOlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IGhhdmUgYSB0YWJsZXQgcGllem8gYmVlcGVyXFxuICA3MzpcXHRcXHQgIGluIHlvdXIgUEMgaW5zdGVhZCBvZiB0aGUgcmVhbCBzcGVha2VyLlxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQgIFNheSBOIGlmIHlvdSBoYXZlIGEgc291bmQgY2FyZC5cXG4gIDc2OlxcdFxcdCAgU2F5IE0gaWYgeW91IGRvbid0LlxcbiAgNzc6XFx0XFx0ICBTYXkgWSBvbmx5IGlmIHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSBkby5cXG4gIDc4OlxcdFxcbiAgNzk6XFx0Y29uZmlnIFNORF9EVU1NWVxcbiAgODA6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFxcXCJcXG4gIDgxOlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSB0aGUgZHVtbXkgZHJpdmVyLiAgVGhpcyBkcml2ZXIgZG9lc1xcbiAgODQ6XFx0XFx0ICBub3RoaW5nLCBidXQgZW11bGF0ZXMgdmFyaW91cyBtaXhlciBjb250cm9scyBhbmQgUENNIGRldmljZXMuXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyB1bmxlc3MgeW91J3JlIHRlc3RpbmcgdGhlIGhhcmR3YXJlIHN1cHBvcnRcXG4gIDg3OlxcdFxcdCAgb2YgcHJvZ3JhbXMgdXNpbmcgdGhlIEFMU0EgQVBJLlxcbiAgODg6XFx0XFxuICA4OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDkwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWR1bW15LlxcbiAgOTE6XFx0XFxuICA5MjpcXHRjb25maWcgU05EX0FMT09QXFxuICA5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBsb29wYmFjayBkcml2ZXIgKFBDTSlcXFwiXFxuICA5NDpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAgOTU6XFx0XFx0c2VsZWN0IFNORF9USU1FUlxcbiAgOTY6XFx0XFx0aGVscFxcbiAgOTc6XFx0XFx0ICBTYXkgJ1knIG9yICdNJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBQQ00gbG9vcGJhY2sgZGV2aWNlLlxcbiAgOTg6XFx0XFx0ICBUaGlzIG1vZHVsZSByZXR1cm5zIHBsYXllZCBzYW1wbGVzIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UgdXNpbmdcXG4gIDk5OlxcdFxcdCAgdGhlIHN0YW5kYXJkIEFMU0EgUENNIGRldmljZS4gVGhlIGRldmljZXMgYXJlIHJvdXRlZCAwLVxcdTAwM2UxIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToxNC41NjczMTUxNTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3NTczMjY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU291bmQgRHJpdmVycyoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGFuZCBgU05EX1ZJUk1JRElgIGFyZSBhbGwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgZ2VuZXJpYyBzb3VuZCBkcml2ZXJzIHRoYXQgZG9uJ3QgdGllIHRoZW1zZWx2ZXMgdG8gYW55IHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIFRoYXQncyBnb29kLCBrZWVwcyB0aGluZ3MgZmxleGlibGUuIEFuZCBgU05EX01QVTQwMWAgc2VlbXMgdG8gZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgYXMgd2VsbC4gVGhlbiB3ZSBoYXZlIGBTTkRfTVRTNjRgLiBUaGF0IG9uZSdzIGdvdCBhIGRlcGVuZGVuY3ksIHRob3VnaC4gSXQncyBjb25uZWN0ZWQgdG8gYFBBUlBPUlRgLiBBbHJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIgb24gdGhhdCBgUEFSUE9SVGAgZGVwZW5kZW5jeSBhbmQgZmlndXJlIG91dCB3aGF0IHRoYXQncyBhbGwgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjIxLjA0MzA1MTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0aGVscFxcbiAxNTE6XFx0XFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxcbiAxNTI6XFx0XFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuIDE1MzpcXHRcXHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24ndCB1c2VkIGZvciB0aGUgcG9ydC5cXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHBhdi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIFNORF9NVFM2NFxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkVTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcXFwiXFxuIDE2MDpcXHRcXHRkZXBlbmRzIG9uIFBBUlBPUlRcXG4gMTYxOlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNjI6XFx0XFx0aGVscFxcbiAxNjM6XFx0XFx0ICBUaGUgRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGlzIGEgNCBJbiA0IE91dCBNSURJIEludGVyZmFjZSB3aXRoIFxcbiAxNjQ6XFx0XFx0ICBhZGRpdGlvbmFsIFNNUFRFIFRpbWVjb2RlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHBhcmFsbGVsIHBvcnQuXFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdCAgU2F5ICdZJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoaXMgZGV2aWNlLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICdNJyBoZXJlOiB0aGUgbW9kdWxlIFxcbiAxNjk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXRzNjQuXFxuIDE3MDpcXHRcXG4gMTcxOlxcdGNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFxcbiAxNzI6XFx0XFx0dHJpc3RhdGUgXFxcIlVBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcXFwiXFxuIDE3MzpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcXG4gMTc0OlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBUbyBpbmNsdWRlIHN1cHBvcnQgZm9yIE1JREkgc2VyaWFsIHBvcnQgaW50ZXJmYWNlcywgc2F5IFkgaGVyZVxcbiAxNzc6XFx0XFx0ICBhbmQgcmVhZCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL3NvdW5kL2NhcmRzL3NlcmlhbC11MTY1NTAucnN0XFx1MDAzZS5cXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBzZXJpYWwgVUFSVHMgMTY1NTAgYW5kIGJldHRlci5cXG4gMTc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToyMS4wNDMxMzk4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM0NzgwMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgT3V0LW9mLUJvdW5kcyBWdWxuZXJhYmlsaXRpZXMgaW4gU291bmQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YCBib3RoIHJlbHkgb24gYFBBUlBPUlRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYCBuZWVkcyBgSEFTX0lPUE9SVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHRoZXNlIHNwZWNpZmljIHNvdW5kIGRyaXZlcnMuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGRldnB0ci1cdTAwM2VpZGAgKG9yIGBwZGV2LVx1MDAzZWlkYCkgaXMgc29tZXRpbWVzIGV4Y2VlZGluZyB0aGUgYm91bmRzIG9mIHRoZSBgU05EUlZfQ0FSRFNgIGFycmF5LCB3aGljaCBpcyB0eXBpY2FsbHkgb2Ygc2l6ZSA4LlxuXG5UaGUgcmVhbCBraWNrZXIgaXMgdGhhdCBpZiBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgb3IgZ2VuZXJhdGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIGl04oCZcyBnb2luZyB0byBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBleHBsb2l0YWJsZS4gVGhhdCdzIGEgcGVyZmVjdCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2UgcHJvYmUgZnVuY3Rpb25zIHNwZWNpZmljYWxseTogYGxvb3BiYWNrX3Byb2JlYCwgYHNuZF9kdW1teV9wcm9iZWAsIGBzbmRfbXB1NDAxX3Byb2JlYCwgYHNuZF9tdHM2NF9wcm9iZWAsIGBzbmRfcG9ydG1hbl9wcm9iZWAsIGBzbmRfc2VyaWFsX3Byb2JlYCwgYHNuZF92aXJtaWRpX3Byb2JlYCwgYW5kIGBiZWxsc19wcm9iZWAuIFRoYXQncyBhIHNvbGlkIGxpc3QgdG8gc3RhcnQgd2l0aC5cblxuSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9ucyB0byBmdWxseSBpbnZlc3RpZ2F0ZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX01QVTQwMWAsIGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBgU05EX1NFUklBTF9VMTY1NTBgLCBgU05EX1ZJUk1JRElgLCBhbmQgYFNORF9TT0NfQkVMTFNgLiBXYWl0LCBub3cgdGhhdCBJIGxvb2sgYXQgYFNORF9TT0NfQkVMTFNgLCBpdCBoYXMgYSBidW5jaCBvZiBkZXBlbmRlbmNpZXM6IGBNRkRfQVJJWk9OQSBcdTAwMjZcdTAwMjYgTUZEX1dNNTEwMiBcdTAwMjZcdTAwMjYgTUZEX1dNNTExMCBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSYC4gU3l6a2FsbGVyIG1pZ2h0IGJhbGsgYXQgdGhhdC4gSXQgbWlnaHQgYmUgc2ltcGxlciB0byBqdXN0IGluY2x1ZGUgYFNORF9TT0NfQkVMTFNgIGFuZCBob3BlIGl0IGZpZ3VyZXMgaXQgb3V0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgU05EX1ZJUk1JRElgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToyOC4xNzc5MjI1MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXG4gMTIxOlxcdFxcdCAgSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBvciBwYXR0ZXJuLWJhc2VkIGRhdGEgaW50byB0aGUgY2FwdHVyZSBzdHJlYW0sXFxuIDEyMjpcXHRcXHQgIGNoZWNrIHRoZSBwbGF5YmFjayBzdHJlYW0gZm9yIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIHBhdHRlcm4sIGluamVjdFxcbiAxMjM6XFx0XFx0ICB0aW1lIGRlbGF5cyBkdXJpbmcgY2FwdHVyZS9wbGF5YmFjaywgcmVkZWZpbmUgdGhlIFJFU0VUIGlvY3RsIG9wZXJhdGlvblxcbiAxMjQ6XFx0XFx0ICB0byBwZXJmb3JtIHRoZSBQQ00gbWlkZGxlIGxheWVyIHRlc3RpbmcgYW5kIGluamVjdCBlcnJvcnMgZHVyaW5nIHRoZVxcbiAxMjU6XFx0XFx0ICBQQ00gY2FsbGJhY2tzLiBJdCBzdXBwb3J0cyBib3RoIGludGVybGVhdmVkIGFuZCBub24taW50ZXJsZWF2ZWQgYWNjZXNzXFxuIDEyNjpcXHRcXHQgIG1vZGVzLiBZb3UgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZnRlc3QgaW4gdGhlICdhbHNhJ1xcbiAxMjc6XFx0XFx0ICBzZWxmdGVzdHMgZm9sZGVyLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRjb25maWcgU05EX1ZJUk1JRElcXG4gMTMwOlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIE1JREkgc291bmRjYXJkXFxcIlxcbiAxMzE6XFx0XFx0ZGVwZW5kcyBvbiBTTkRfU0VRVUVOQ0VSXFxuIDEzMjpcXHRcXHRzZWxlY3QgU05EX1RJTUVSXFxuIDEzMzpcXHRcXHRzZWxlY3QgU05EX1JBV01JRElcXG4gMTM0OlxcdFxcdHNlbGVjdCBTTkRfU0VRX1ZJUk1JRElcXG4gMTM1OlxcdFxcdHNlbGVjdCBTTkRfU0VRX01JRElfRVZFTlRcXG4gMTM2OlxcdFxcdGhlbHBcXG4gMTM3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHRoZSB2aXJ0dWFsIE1JREkgZHJpdmVyLiAgVGhpcyBkcml2ZXJcXG4gMTM4OlxcdFxcdCAgYWxsb3dzIHRvIGNvbm5lY3QgYXBwbGljYXRpb25zIHVzaW5nIHJhdyBNSURJIGRldmljZXMgdG9cXG4gMTM5OlxcdFxcdCAgc2VxdWVuY2VyIGNsaWVudHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjI4LjE3ODAyMzE5OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQwMjQyMjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVwZW5kZW5jeSBDaGVja2luZyBmb3IgU291bmQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBhbmQgaW1tZWRpYXRlbHkgYSBjb25uZWN0aW9uIGNsaWNrczogYFNORF9WSVJNSURJYCByZWxpZXMgb24gYFNORF9TRVFVRU5DRVJgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHZpcnR1YWwgTUlESSBuZWVkcyB0aGUgc2VxdWVuY2VyIGluZnJhc3RydWN0dXJlIHRvIGZ1bmN0aW9uLiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgcmVsYXRpb25zaGlwIGlzIHNvdW5kLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBTTkRfTVBVNDAxYCBuZXh0LCBhcyB0aGF0J3MgYSBrZXkgcGllY2UgaW4gdGhpcyBzb3VuZCBwdXp6bGUgYW5kIGxpa2VseSB0byBoYXZlIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjMzLjcxODI2ODk3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NlcmlhbC1taWRpLnlhbWxcXHUwMDNlXFxuIDIwMTpcXHRcXG4gMjAyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtc2VyaWFsLWdlbmVyaWMuXFxuIDIwNDpcXHRcXG4gMjA1OlxcdGNvbmZpZyBTTkRfTVBVNDAxXFxuIDIwNjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBNUFUtNDAxIFVBUlQgZHJpdmVyXFxcIlxcbiAyMDc6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9QT1JUXFxuIDIwODpcXHRcXHRzZWxlY3QgU05EX01QVTQwMV9VQVJUXFxuIDIwOTpcXHRcXHRoZWxwXFxuIDIxMDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNSURJIHBvcnRzIGNvbXBhdGlibGUgd2l0aFxcbiAyMTE6XFx0XFx0ICB0aGUgUm9sYW5kIE1QVS00MDEgaW50ZXJmYWNlIGluIFVBUlQgbW9kZS5cXG4gMjEyOlxcdFxcbiAyMTM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIxNDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tcHU0MDEuXFxuIDIxNTpcXHRcXG4gMjE2OlxcdGNvbmZpZyBTTkRfUE9SVE1BTjJYNFxcbiAyMTc6XFx0XFx0dHJpc3RhdGUgXFxcIlBvcnRtYW4gMng0IGRyaXZlclxcXCJcXG4gMjE4OlxcdFxcdGRlcGVuZHMgb24gUEFSUE9SVFxcbiAyMTk6XFx0XFx0c2VsZWN0IFNORF9SQVdNSURJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjMzLjcxODM0OTgwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDgwMjA4MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgZGVwZW5kZW5jaWVzLCBwaHJhc2VkIGFzIGlmIHRoZXkncmUgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzLlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuUmlnaHQsIGxldCdzIHNlZSwgbXkgbWVudGFsIG1hcCBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhlIHNvdW5kIG1vZHVsZSBgU05EX01QVTQwMWAgaXMgZGVmaW5pdGVseSB0aWVkIHRvIGBIQVNfSU9QT1JUYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBjbGFzc2ljIE1JREkgaW50ZXJmYWNlLCBuZWVkcyBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZW4gSSdtIHRoaW5raW5nIGFib3V0IGBTTkRfUE9SVE1BTjJYNGAsIGFuZCBpdCdzIGZsYWdnZWQgYXMgZGVwZW5kZW50IG9uIGBQQVJQT1JUYCAtIG1lYW5pbmcgcGFyYWxsZWwgcG9ydC4gVGhhdCdzIGEgYml0IGxlc3MgY29tbW9uIG5vd2FkYXlzLCBidXQgYWdhaW4sIGNvbXBsZXRlbHkgbG9naWNhbC4gSXQgd291bGRuJ3QgZnVuY3Rpb24gd2l0aG91dCB0aGUgcGFyYWxsZWwgcG9ydC4gT2theSwgSSd2ZSBnb3QgdGhvc2UgZGVwZW5kZW5jaWVzIG5haWxlZCBkb3duLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZyBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdC4gTm93IEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIGBTTkRfTVRTNjRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDEuMTk4NTYxNzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0aGVscFxcbiAxNTE6XFx0XFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxcbiAxNTI6XFx0XFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuIDE1MzpcXHRcXHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24ndCB1c2VkIGZvciB0aGUgcG9ydC5cXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHBhdi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIFNORF9NVFM2NFxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkVTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcXFwiXFxuIDE2MDpcXHRcXHRkZXBlbmRzIG9uIFBBUlBPUlRcXG4gMTYxOlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNjI6XFx0XFx0aGVscFxcbiAxNjM6XFx0XFx0ICBUaGUgRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGlzIGEgNCBJbiA0IE91dCBNSURJIEludGVyZmFjZSB3aXRoIFxcbiAxNjQ6XFx0XFx0ICBhZGRpdGlvbmFsIFNNUFRFIFRpbWVjb2RlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHBhcmFsbGVsIHBvcnQuXFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdCAgU2F5ICdZJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoaXMgZGV2aWNlLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICdNJyBoZXJlOiB0aGUgbW9kdWxlIFxcbiAxNjk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXRzNjQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjQxLjE5ODY1OTkxNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTI0MzMxOTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTXVzaW5ncyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHNvdW5kIGRldmljZSBjb25maWd1cmF0aW9ucyBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZS4gSXQncyBjbGVhciB0aGF0IGBTTkRfTVRTNjRgIHJlbGllcyBvbiBgUEFSUE9SVGAuIEFscmlnaHQsIHRoYXQncyBub3QgdW5leHBlY3RlZDsgdGhlc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIG9mdGVuIGNyb3AgdXAuXG5cblNvLCBpbiBvcmRlciB0byBnZXQgYFNORF9NVFM2NGAgdG8gd29yayBjb3JyZWN0bHksIEknbGwgYWxzbyBuZWVkIHRvIGVuYWJsZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX1ZJUk1JRElgLCBgU05EX1NFUVVFTkNFUmAsIGBTTkRfTVBVNDAxYCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFBBUlBPUlRgIGFuZCBgU05EX1NPQ19CRUxMU2AuIFRoYXQgYWxsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIGF0IGxlYXN0IGluaXRpYWxseS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGBTTkRfU09DX0JFTExTYCBpcyBsaWtlbHkgdG8gaGF2ZSBhIGJ1bmNoIG9mIGl0cyBvd24gZGVwZW5kZW5jaWVzIEknbGwgbmVlZCB0byBzb3J0IG91dCwgb3IgYXQgbGVhc3QgYmUgYXdhcmUgb2YuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGluIGBzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnYC4gR29vZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIzOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjQ3LjEyMjk5NjQ4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdGRlcGVuZHMgb24gSU5QVVQgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfV0xGX0NSQUdHXzY0MTAgfHwgQ09NUElMRV9URVNUXFxuICA2MjpcXHRcXHRzZWxlY3QgU05EX1NBTVNVTkdfSTJTXFxuICA2MzpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTg5NjJcXG4gIDY0OlxcdFxcbiAgNjU6XFx0Y29uZmlnIFNORF9TT0NfQkVMTFNcXG4gIDY2OlxcdFxcdHRyaXN0YXRlIFxcXCJBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXFxcIlxcbiAgNjc6XFx0XFx0ZGVwZW5kcyBvbiBNRkRfQVJJWk9OQSBcXHUwMDI2XFx1MDAyNiBNRkRfV001MTAyIFxcdTAwMjZcXHUwMDI2IE1GRF9XTTUxMTAgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG4gIDY5OlxcdFxcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcXG4gIDcwOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxcbiAgNzE6XFx0XFx0c2VsZWN0IFNORF9TT0NfV001MTEwXFxuICA3MjpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTkwODFcXG4gIDczOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxcbiAgNzQ6XFx0XFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgU05EX1NPQ19MT1dMQU5EXFxuICA3NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDcuMTIzMDc5NDAxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDg5Mzg2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipEZXBlbmRlbmNpZXMgYW5kIEluY2x1c2lvbiBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyBgU05EX1NPQ19CRUxMU2AgbmVlZHMgc2V2ZXJhbCBvdGhlciBtb2R1bGVzIHRvIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHJlbGllcyBvbiBgTUZEX0FSSVpPTkFgLCBgTUZEX1dNNTEwMmAsIGBNRkRfV001MTEwYCwgdGhlIGBJMkNgIGludGVyZmFjZSwgYW5kIHRoZSBgU1BJX01BU1RFUmAgaW50ZXJmYWNlLiBIbW0sIGdpdmVuIHRoYXQgZGVwZW5kZW5jeSB0cmVlLCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYE1GRF9BUklaT05BYCwgYE1GRF9XTTUxMDJgLCBhbmQgYE1GRF9XTTUxMTBgLiBUaGV5J3JlIGludGVncmFsLCBhbmQgSSBjYW4ndCBzZWUgYSBjbGVhbiB3YXkgYXJvdW5kIHRoYXQuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgTUZEX0FSSVpPTkFgIG1vZHVsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgb25lLCBlc3BlY2lhbGx5IGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjUzLjAzMjAyNDAyN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxNDUxNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1GRF9BUklaT05BXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWZkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21mZC9LY29uZmlnPTIwNTQ9Y29uZmlnIE1GRF9WWDg1NVxcbi0tXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDYyLVxcbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2Mzpjb25maWcgTUZEX0FSSVpPTkFcXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNjQtXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDY4LVxcbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2OTpjb25maWcgTUZEX0FSSVpPTkFfSTJDXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDcwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgTG9naWMvV29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzIEFyaXpvbmEgcGxhdGZvcm0gd2l0aCBJMkNcXFwiXFxuLS1cXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNzctXFxuZHJpdmVycy9tZmQvS2NvbmZpZzoyMDc4OmNvbmZpZyBNRkRfQVJJWk9OQV9TUElcXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNzktXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYy9Xb2xmc29uIE1pY3JvZWxlY3Ryb25pY3MgQXJpem9uYSBwbGF0Zm9ybSB3aXRoIFNQSVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTMuMDk5MTc1MDcxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODY4MDIxMzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IGFuZCBJbXBvcnRhbmNlIG9mIFNvdW5kIERyaXZlciBQcm9iZSBGdW5jdGlvbnMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFmdGVyIHRoaXMgcGF0Y2gsIHdoaWNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNrcyBvbiBwbGF0Zm9ybSBkZXZpY2UgSURzIHdpdGhpbiBzb3VuZCBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgaW5jbHVkZSBgU05EX1NPQ19CRUxMU2AgYW5kIGxldCB0aGUgZnV6emVyIHNvcnQgb3V0IGRlcGVuZGVuY2llcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VjY2Vzc2Z1bCBmdXp6aW5nLCBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGFuZCBgU05EX1ZJUk1JRElgIHNlZW0gbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBzaW5jZSB0aGV5J3JlIGxlc3MgaGFyZHdhcmUtZGVwZW5kZW50LlxuXG5JIGRlY2lkZWQgdG8gbGlzdCB0aGUgY29uZmlncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmaWxlcy4gVGhhdCBtZWFucyB0aGUgZm9sbG93aW5nIGNvbmZpZyBvcHRpb25zIG5lZWQgdG8gYmUgY29uc2lkZXJlZDogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX01QVTQwMWAsIGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBgU05EX1NFUklBTF9VMTY1NTBgLCBgU05EX1ZJUk1JRElgLCBhbmQgYFNORF9TT0NfQkVMTFNgLlxuXG5UaGUgY29ycmVzcG9uZGluZyBwcm9iZSBmdW5jdGlvbnMgYXJlOiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC5cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGV5IGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIHdoaWNoIGluaXRpYWxseSByYWlzZWQgYSBmbGFnIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5IHBvaW50cy4gSG93ZXZlciwgdGhlc2UgYXJlICpwcm9iZSogZnVuY3Rpb25zLCBzbyB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuIHRvIGJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRoZSBwbGF0Zm9ybSBkcml2ZXIgc3RydWN0LCBtYWtpbmcgdGhlbSBub24taW5saW5lZCBhbmQgaGF2aW5nIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFRoaXMgaXMgcGVyZmVjdGx5IGFjY2VwdGFibGU7IGl0J3MgdGhlIGNvcnJlY3QgYXBwcm9hY2ggdG8gbGlzdCB0aGVtLiBJIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhlc2Ugc3RhdGljIHByb2Jlcy5cblxuTm93LCBsZXQncyByZWNhcCB0aGUgcmVhc29uaW5nOiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgZnVuY3Rpb25hbCBidWcsIHNwZWNpZmljYWxseSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIHByb2JlIGZ1bmN0aW9ucyB3aGVuIGRlYWxpbmcgd2l0aCBkeW5hbWljYWxseSBjcmVhdGVkIHBsYXRmb3JtIGRldmljZXMuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdmlydHVhbGx5LCBpdCdzIGRlZmluaXRlbHkgZnV6emFibGUsIGFuZCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQuXG5cbkZpbmFsbHksIEkgY2hlY2tlZCBmb3IgZGVwZW5kZW5jaWVzIGFuZCByZW1lbWJlcmVkIHRvIGFkZCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIGBTTkRfU0VRVUVOQ0VSYCBpcyByZXF1aXJlZCBmb3IgYFNORF9WSVJNSURJYCwgYW5kIGBQQVJQT1JUYCBpcyBuZWVkZWQgZm9yIGJvdGggYFNORF9NVFM2NGAgYW5kIGBTTkRfUE9SVE1BTjJYNGAuIEknbSBhbHNvIGF3YXJlIHRoYXQgYEhBU19JT1BPUlRgIGlzIG5lZWRlZCBmb3IgYFNORF9NUFU0MDFgIGFuZCBgU05EX1NFUklBTF9VMTY1NTBgLCB3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBvbiB4ODYsIHdoaWNoIGlzIGdvb2QuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IG9mIGNvbmZpZ3MgZm9yIGZ1enppbmcgaXM6IGBTTkRfQUxPT1BgLCBgU05EX0RVTU1ZYCwgYFNORF9NUFU0MDFgLCBgU05EX01UUzY0YCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFNORF9WSVJNSURJYCwgYFNORF9TT0NfQkVMTFNgLCBgU05EX1NFUVVFTkNFUmAsIGFuZCBgUEFSUE9SVGAuXG5cbk5vdywgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTc0LCJPdXRwdXRUb2tlbnMiOjI5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjowNS45NjcyMDAxMjRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwODM4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNORF9BTE9PUFwiLFxuICAgIFwiU05EX0RVTU1ZXCIsXG4gICAgXCJTTkRfTVBVNDAxXCIsXG4gICAgXCJTTkRfTVRTNjRcIixcbiAgICBcIlNORF9QT1JUTUFOMlg0XCIsXG4gICAgXCJTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICAgIFwiU05EX1ZJUk1JRElcIixcbiAgICBcIlNORF9TT0NfQkVMTFNcIixcbiAgICBcIlNORF9TRVFVRU5DRVJcIixcbiAgICBcIlBBUlBPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wYmFja19wcm9iZVwiLFxuICAgIFwic25kX2R1bW15X3Byb2JlXCIsXG4gICAgXCJzbmRfbXB1NDAxX3Byb2JlXCIsXG4gICAgXCJzbmRfbXRzNjRfcHJvYmVcIixcbiAgICBcInNuZF9wb3J0bWFuX3Byb2JlXCIsXG4gICAgXCJzbmRfc2VyaWFsX3Byb2JlXCIsXG4gICAgXCJzbmRfdmlybWlkaV9wcm9iZVwiLFxuICAgIFwiYmVsbHNfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXIncyBkZXZpY2UgY3JlYXRpb24gcHNldWRvLXN5c2NhbGxzKSwgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNoYW5nZXMgZml4IGEgZnVuY3Rpb25hbCBidWcuIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTkRfQUxPT1BcIixcbiAgICBcIlNORF9EVU1NWVwiLFxuICAgIFwiU05EX01QVTQwMVwiLFxuICAgIFwiU05EX01UUzY0XCIsXG4gICAgXCJTTkRfUE9SVE1BTjJYNFwiLFxuICAgIFwiU05EX1NFUklBTF9VMTY1NTBcIixcbiAgICBcIlNORF9WSVJNSURJXCIsXG4gICAgXCJTTkRfU09DX0JFTExTXCIsXG4gICAgXCJTTkRfU0VRVUVOQ0VSXCIsXG4gICAgXCJQQVJQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcGJhY2tfcHJvYmVcIixcbiAgICBcInNuZF9kdW1teV9wcm9iZVwiLFxuICAgIFwic25kX21wdTQwMV9wcm9iZVwiLFxuICAgIFwic25kX210czY0X3Byb2JlXCIsXG4gICAgXCJzbmRfcG9ydG1hbl9wcm9iZVwiLFxuICAgIFwic25kX3NlcmlhbF9wcm9iZVwiLFxuICAgIFwic25kX3Zpcm1pZGlfcHJvYmVcIixcbiAgICBcImJlbGxzX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJ3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 06:33:20 +0000 UTC FinishedAt: 2026-08-07 06:36:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SND_ALOOP", "SND_DUMMY", "SND_MPU401", "SND_MTS64", "SND_PORTMAN2X4", "SND_SERIAL_U16550", "SND_VIRMIDI", "SND_SOC_BELLS", "SND_SEQUENCER", "PARPORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SND_ALOOP", "SND_DUMMY", "SND_MPU401", "SND_MTS64", "SND_PORTMAN2X4", "SND_SERIAL_U16550", "SND_VIRMIDI", "SND_SOC_BELLS", "SND_SEQUENCER", "PARPORT" ], "series_id": "08278640-61b4-4fd8-9f52-35ead03bc0ea" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "loopback_probe", "snd_dummy_probe", "snd_mpu401_probe", "snd_mts64_probe", "snd_portman_probe", "snd_serial_probe", "snd_virmidi_probe", "bells_probe" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYzk5Y2JjZjg5MDc4MGU1MjY2MTI3NjM4ZDUzMzI2OGMyZmE5YTNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmMgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbmluZGV4IDA2YmZlMDllYWUxYTIuLjk1MjBkMzQzMWEyZWUgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvYWxvb3AuY1xuQEAgLTE4MDIsNiAmIzQzOzE4MDIsOSBAQCBzdGF0aWMgaW50IGxvb3BiYWNrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdGlmIChkZXYgXHUwMDNjIDAgfHwgZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9kdW1teS5jIGIvc291bmQvZHJpdmVycy9kdW1teS5jXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcbkBAIC0xMDE3LDYgJiM0MzsxMDE3LDkgQEAgc3RhdGljIGludCBzbmRfZHVtbXlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGlkeCwgZXJyO1xuIFx0aW50IGRldiA9IGRldnB0ci1cdTAwM2VpZDtcbiBcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXG4gXHRcdFx0XHRzaXplb2Yoc3RydWN0IHNuZF9kdW1teSksIFx1MDAyNmNhcmQpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXG5pbmRleCBjMjE3YzQyN2JmMWUwLi5hNTE5Y2U5ZWI5MmY0IDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXG5AQCAtODksNiAmIzQzOzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBlcnI7XG4gXHRzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdGlmIChwb3J0W2Rldl0gPT0gU05EUlZfQVVUT19QT1JUKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgXCYjMzQ7c3BlY2lmeSBwb3J0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tdHM2NC5jIGIvc291bmQvZHJpdmVycy9tdHM2NC5jXG5pbmRleCAzNmU5ZWFiMjA0Y2FjLi4zZmZmNWNmYzRkNzFmIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9tdHM2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL210czY0LmNcbkBAIC05MDAsNyAmIzQzOzkwMCw3IEBAIHN0YXRpYyBpbnQgc25kX210czY0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcbi1cdGlmIChkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5pbmRleCBkY2MwODk5Y2ZiOTlhLi4wYTc4MTU4ODA4ZTdkIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5AQCAtNjk3LDcgJiM0Mzs2OTcsNyBAQCBzdGF0aWMgaW50IHNuZF9wb3J0bWFuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcbi1cdGlmIChkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYyBiL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG5pbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG5AQCAtODQ2LDYgJiM0Mzs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XG4gXHRjYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzpcbiBcdFx0aW5zW2Rldl0gPSAxO1xuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbmluZGV4IGEyMDRmNDJkMTAyNjUuLjBhOTMxM2VlYjg5OGEgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgaW50IHNuZF92aXJtaWRpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBpZHgsIGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4mIzQzO1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdGVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KFx1MDAyNmRldnB0ci1cdTAwM2VkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLFxuIFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBzbmRfY2FyZF92aXJtaWRpKSwgXHUwMDI2Y2FyZCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmMgYi9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG5pbmRleCBmYzQ5NjNkM2I5OWJmLi4zYTAzNTI0OTkyYmY3IDEwMDY0NFxuLS0tIGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xuQEAgLTQ3MCw2ICYjNDM7NDcwLDkgQEAgc3RhdGljIGludCBiZWxsc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHBkZXYtXHUwMDNlaWQgXHUwMDNjIDAgfHwgcGRldi1cdTAwM2VpZCBcdTAwM2U9IEFSUkFZX1NJWkUoYmVsbHNfY2FyZHMpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0YmVsbHNfY2FyZHNbcGRldi1cdTAwM2VpZF0uZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXG4gXHRyZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY2FyZChcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2YmVsbHNfY2FyZHNbcGRldi1cdTAwM2VpZF0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTkRfQUxPT1AmIzM0OywKICAgICYjMzQ7U05EX0RVTU1ZJiMzNDssCiAgICAmIzM0O1NORF9NUFU0MDEmIzM0OywKICAgICYjMzQ7U05EX01UUzY0JiMzNDssCiAgICAmIzM0O1NORF9QT1JUTUFOMlg0JiMzNDssCiAgICAmIzM0O1NORF9TRVJJQUxfVTE2NTUwJiMzNDssCiAgICAmIzM0O1NORF9WSVJNSURJJiMzNDssCiAgICAmIzM0O1NORF9TT0NfQkVMTFMmIzM0OywKICAgICYjMzQ7U05EX1NFUVVFTkNFUiYjMzQ7LAogICAgJiMzNDtQQVJQT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9vcGJhY2tfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX2R1bW15X3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9tcHU0MDFfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX210czY0X3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9wb3J0bWFuX3Byb2JlJiMzNDssCiAgICAmIzM0O3NuZF9zZXJpYWxfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3Zpcm1pZGlfcHJvYmUmIzM0OywKICAgICYjMzQ7YmVsbHNfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJiMzOTtzIGRldmljZSBjcmVhdGlvbiBwc2V1ZG8tc3lzY2FsbHMpLCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGFuZCB0aGUgY2hhbmdlcyBmaXggYSBmdW5jdGlvbmFsIGJ1Zy4gVGhlcmVmb3JlLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmM5OWNiY2Y4OTA3ODBlNTI2NjEyNzYzOGQ1MzMyNjhjMmZhOWEzYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDY6MzQ6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmMgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmMKaW5kZXggMDZiZmUwOWVhZTFhMi4uOTUyMGQzNDMxYTJlZSAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9hbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvYWxvb3AuYwpAQCAtMTgwMiw2ICYjNDM7MTgwMiw5IEBAIHN0YXRpYyBpbnQgbG9vcGJhY2tfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKQogCWludCBkZXYgPSBkZXZwdHItJmd0O2lkOwogCWludCBlcnI7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoJmFtcDtkZXZwdHItJmd0O2RldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsCiAJCQkJc2l6ZW9mKHN0cnVjdCBsb29wYmFjayksICZhbXA7Y2FyZCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2R1bW15LmMgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmMKaW5kZXggNzI4M2YwZjE4ODEzZC4uNDFlNzk1NzRjOTMwMiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2RyaXZlcnMvZHVtbXkuYwpAQCAtMTAxNyw2ICYjNDM7MTAxNyw5IEBAIHN0YXRpYyBpbnQgc25kX2R1bW15X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cikKIAlpbnQgaWR4LCBlcnI7CiAJaW50IGRldiA9IGRldnB0ci0mZ3Q7aWQ7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoJmFtcDtkZXZwdHItJmd0O2RldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsCiAJCQkJc2l6ZW9mKHN0cnVjdCBzbmRfZHVtbXkpLCAmYW1wO2NhcmQpOwogCWlmIChlcnIgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmMgYi9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwppbmRleCBjMjE3YzQyN2JmMWUwLi5hNTE5Y2U5ZWI5MmY0IDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYwpAQCAtODksNiAmIzQzOzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cikKIAlpbnQgZXJyOwogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKIAomIzQzOwlpZiAoZGV2ICZsdDsgMCB8fCBkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAlpZiAocG9ydFtkZXZdID09IFNORFJWX0FVVE9fUE9SVCkgewogCQlkZXZfZXJyKCZhbXA7ZGV2cHRyLSZndDtkZXYsICYjMzQ7c3BlY2lmeSBwb3J0XG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9tdHM2NC5jIGIvc291bmQvZHJpdmVycy9tdHM2NC5jCmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvbXRzNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL210czY0LmMKQEAgLTkwMCw3ICYjNDM7OTAwLDcgQEAgc3RhdGljIGludCBzbmRfbXRzNjRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CiAKLQlpZiAoZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwlpZiAoZGV2ICZsdDsgMCB8fCBkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiAJCXJldHVybiAtRU5PREVWOwogCWlmICghZW5hYmxlW2Rldl0pIAogCQlyZXR1cm4gLUVOT0VOVDsKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jIGIvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKaW5kZXggZGNjMDg5OWNmYjk5YS4uMGE3ODE1ODgwOGU3ZCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmMKQEAgLTY5Nyw3ICYjNDM7Njk3LDcgQEAgc3RhdGljIGludCBzbmRfcG9ydG1hbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAotCWlmIChkZXYgJmd0Oz0gU05EUlZfQ0FSRFMpCiYjNDM7CWlmIChkZXYgJmx0OyAwIHx8IGRldiAmZ3Q7PSBTTkRSVl9DQVJEUykKIAkJcmV0dXJuIC1FTk9ERVY7CiAJaWYgKCFlbmFibGVbZGV2XSkgCiAJCXJldHVybiAtRU5PRU5UOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwppbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuYwpAQCAtODQ2LDYgJiM0Mzs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKQogCWludCBlcnI7CiAJaW50IGRldiA9IGRldnB0ci0mZ3Q7aWQ7CiAKJiM0MzsJaWYgKGRldiAmbHQ7IDAgfHwgZGV2ICZndDs9IFNORFJWX0NBUkRTKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJc3dpdGNoIChhZGFwdG9yW2Rldl0pIHsKIAljYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzoKIAkJaW5zW2Rldl0gPSAxOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy92aXJtaWRpLmMgYi9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwppbmRleCBhMjA0ZjQyZDEwMjY1Li4wYTkzMTNlZWI4OThhIDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuYwpAQCAtNzUsNiAmIzQzOzc1LDkgQEAgc3RhdGljIGludCBzbmRfdmlybWlkaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpCiAJaW50IGlkeCwgZXJyOwogCWludCBkZXYgPSBkZXZwdHItJmd0O2lkOwogCiYjNDM7CWlmIChkZXYgJmx0OyAwIHx8IGRldiAmZ3Q7PSBTTkRSVl9DQVJEUykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCWVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KCZhbXA7ZGV2cHRyLSZndDtkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLAogCQkJCXNpemVvZihzdHJ1Y3Qgc25kX2NhcmRfdmlybWlkaSksICZhbXA7Y2FyZCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jIGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuYwppbmRleCBmYzQ5NjNkM2I5OWJmLi4zYTAzNTI0OTkyYmY3IDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmMKQEAgLTQ3MCw2ICYjNDM7NDcwLDkgQEAgc3RhdGljIGludCBiZWxsc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCWludCByZXQ7CiAKJiM0MzsJaWYgKHBkZXYtJmd0O2lkICZsdDsgMCB8fCBwZGV2LSZndDtpZCAmZ3Q7PSBBUlJBWV9TSVpFKGJlbGxzX2NhcmRzKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWJlbGxzX2NhcmRzW3BkZXYtJmd0O2lkXS5kZXYgPSAmYW1wO3BkZXYtJmd0O2RldjsKIAogCXJldCA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9jYXJkKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmYW1wO2JlbGxzX2NhcmRzW3BkZXYtJmd0O2lkXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50IGZvciBTb3VuZCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24gQm91bmRzIENoZWNrcyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdGhhdCYjMzk7cyBhZGRpbmcgYm91bmRzIGNoZWNrcyB0byBgZGV2cHRyLSZndDtpZGAgKG9yIGBwZGV2LSZndDtpZGAgLSBpdCYjMzk7cyB0aGUgc2FtZSB0aGluZyBoZXJlLCByaWdodD8pIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyBhcmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBkcml2ZXIgYmluZGluZyDigJMgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8ga2VlcCBpbiBtaW5kLgoKV2UmIzM5O3JlIGxvb2tpbmcgYXQgZHJpdmVycyBsaWtlIGBhbG9vcC5jYCwgYGR1bW15LmNgLCBhbmQgYHZpcm1pZGkuY2AsIGFsbCBvZiB3aGljaCBhcmUgdmlydHVhbCBzb3VuZCBkcml2ZXJzIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBsb2FkZWQgYW5kIHByb2JlZC4gU28sIHllYWgsIHRoaXMgc2VlbXMgcG90ZW50aWFsbHkgZnV6emFibGUuIEJ1dCB3YWl0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBiZSBwcmVjaXNlLiBUaGUgY2hlY2sgaXMgc3BlY2lmaWNhbGx5IG9uIGBkZXZwdHItJmd0O2lkYCwgd2hpY2gsIGluIHRoaXMgY29udGV4dCwgaXMgdGhlIHBsYXRmb3JtIGRldmljZSBJRC4KClRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gY29udHJvbCBvciBpbmZsdWVuY2UgdGhpcyBJRC4gQ2FuIHdlIGZ1enogcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgY3JlYXRpbmcgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHM/IFRoZSBwYXRjaCBzYXlzIHRoZXNlIGFyZSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIHdoZW4gYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gdGhlIGRyaXZlci4gU3l6a2FsbGVyLCB3aXRoIGl0cyBgc3l6X2Rldl9jcmVhdGVgIG9yIHN5c2ZzIG1hbmlwdWxhdGlvbiBvciBtb2R1bGUgcGFyYW1ldGVycywgY291bGQgcG90ZW50aWFsbHkgYWNoaWV2ZSB0aGlzLgoKTm93LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlICYjMzk7d29ydGggZnV6emluZyYjMzk7IGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmllcyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIG9yIGZvciBgLnJlbW92ZWAgb3IgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucy4gVGhpcyBpcyAqcHJvYmUqIGNvZGUsIG5vdCByZW1vdmUgY29kZS4gUHJvYmUgZnVuY3Rpb25zIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIGRyaXZlciBiaW5kLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBhIHByb2JlIGZ1bmN0aW9uIHRoYXQgY291bGQgcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIHF1ZXN0aW9uIGlzLCBpZiBpdCYjMzk7cyByZWFjaGFibGUgYW5kIHdlJiMzOTtyZSBwcmV2ZW50aW5nIGFuIE9PQiwgaXMgdGhpcyBhIGdvb2QgY2FuZGlkYXRlPyBZZXMsIGl0IGlzIHdvcnRoIGZ1enppbmcuCgpUbyBiZSBleHRyYSBjZXJ0YWluLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0byBjb25maXJtIHRoYXQgdGhlc2UgZHJpdmVycyBjYW4gYmUgZWFzaWx5IGVuYWJsZWQgYW5kIGxvYWRlZC4gTGV0JiMzOTtzIHNlZS4uLiBgYWxvb3AuY2AgaXMgYFNORF9BTE9PUGAsIGBkdW1teS5jYCBpcyBgU05EX0RVTU1ZYCwgYHZpcm1pZGkuY2AgaXMgYFNORF9WSVJNSURJYCwgYG1wdTQwMS5jYCBpcyBgU05EX01QVTQwMWAsIGBtdHM2NC5jYCBpcyBgU05EX01UUzY0YCwgYHBvcnRtYW4yeDQuY2AgaXMgYFNORF9QT1JUTUFOMlg0YCwgYHNlcmlhbC11MTY1NTAuY2AgaXMgYFNORF9TRVJJQUxfVTE2NTUwYCwgYW5kIGBiZWxscy5jYCBpcyBgU05EX1NPQ19CRUxMU2AuIEl0IGxvb2tzIGxpa2UgdGhlc2Ugc2hvdWxkIGJlIHJlYWRpbHkgYXZhaWxhYmxlIHZpYSBzb21lIHF1aWNrIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gZmluZCB0aGVtLiBEZWZpbml0ZWx5IHdvcnRoIGxvb2tpbmcgYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BTE9PUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9Nzk9Y29uZmlnIFNORF9EVU1NWVxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy05MS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo5Mjpjb25maWcgU05EX0FMT09QXG5zb3VuZC9kcml2ZXJzL0tjb25maWctOTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGxvb3BiYWNrIGRyaXZlciAoUENNKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTUKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqQXNzZXNzbWVudCBvZiBBdWRpbyBEZXZpY2UgU3VwcG9ydCoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBzdXBwb3J0IGZvciBhIGZldyBzcGVjaWZpYyBhdWRpbyBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gcnVuIHRocm91Z2ggdGhlc2UgaW4gbXkgaGVhZCDigJMgbGV0JiMzOTtzIHNlZSwgZmlyc3QgYFNORF9EVU1NWWAuIFRoYXQmIzM5O3MgdGhlIGJhc2ljIHNvdW5kIGR1bW15IG1vZHVsZSwgbm90IHVzdWFsbHkgc29tZXRoaW5nIEkmIzM5O20gYWN0aXZlbHkgY29uY2VybmVkIHdpdGgsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGtlZXAgaXQgaW4gbWluZC4KClRoZW4sIHRoZXJlJiMzOTtzIGBTTkRfVklSTUlESWAuIFZpcnR1YWwgTUlESSBpcyBzb21ldGhpbmcgSSBmcmVxdWVudGx5IGhhdmUgdG8gYWNjb3VudCBmb3I7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBpbXBsZW1lbnRlZC4gTmV4dCB1cCwgYFNORF9NUFU0MDFgLiBUaGUgb2xkIE1QVS00MDEgTUlESSBpbnRlcmZhY2Ug4oCTIHN0aWxsIHNlZWluZyB1c2FnZSBpbiBjZXJ0YWluIGVudmlyb25tZW50cy4gSSBoYXZlIHRvIGNoZWNrIGhvdyB0aGUgZHJpdmVycyBhcmUgaG9sZGluZyB1cCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcywgYnV0IEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgZmFpcmx5IHN0YWJsZSBhdCB0aGlzIHBvaW50LgoKRm9sbG93aW5nIHRoYXQsIGBTTkRfTVRTNjRgLCB3aGljaCBwcm9iYWJseSBuZWVkcyBjbG9zZXIgaW5zcGVjdGlvbi4gSSBjYW4gcHJlZGljdCB0aGlzIG9uZSBtaWdodCBicmluZyB1cCBzb21lIG9ic2N1cmUgaXNzdWVzLiBOb3csIGBTTkRfUE9SVE1BTjJYNGAuIEkgbmVlZCB0byBlbnN1cmUgYSBwb3J0IG1hbmFnZXIgc2V0dXAgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gTGV0JiMzOTtzIHNlZSBhYm91dCB0aGUgc2VyaWFsIHBvcnQgaW1wbGVtZW50YXRpb24gbmV4dCB3aXRoIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgdXN1YWxseSBleHBlY3QgdGhpcyBkcml2ZXIgdG8gYmUgc29saWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaW50ZXJydXB0cy4KCkZpbmFsbHksIGBTTkRfU09DX0JFTExTYC4gVGhpcyBvbmUgaXMgcHJvYmFibHkgYSBTeXN0ZW0gT24gQ2hpcCAoU09DKSBzcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSBhbmQgYXJjaGl0ZWN0dXJlIHRvIGRldGVybWluZSBpZiBhbnkgc3VwcG9ydCBpcyBuZWVkZWQsIGJ1dCBJIHNob3VsZCBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8ga2VlcCBhbiBleWUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9EVU1NWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9NDk9Y29uZmlnIFNORF9QQ1NQXG4tLVxuc291bmQvZHJpdmVycy9LY29uZmlnLTc4LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjc5OmNvbmZpZyBTTkRfRFVNTVlcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0R1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfVklSTUlESSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWc9MTEyPWNvbmZpZyBTTkRfUENNVEVTVFxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xMjgtXG5zb3VuZC9kcml2ZXJzL0tjb25maWc6MTI5OmNvbmZpZyBTTkRfVklSTUlESVxuc291bmQvZHJpdmVycy9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgTUlESSBzb3VuZGNhcmRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX01QVTQwMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NvdW5kLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfTVBVNDAxX1VBUlRcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWc9MTg3PWNvbmZpZyBTTkRfU0VSSUFMX0dFTkVSSUNcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjA0LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjIwNTpjb25maWcgU05EX01QVTQwMVxuc291bmQvZHJpdmVycy9LY29uZmlnLTIwNi1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DX0JFTExTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9zYW1zdW5nL0tjb25maWc9NTg9Y29uZmlnIFNORF9TT0NfVE9CRVJNT1JZXG4tLVxuc291bmQvc29jL3NhbXN1bmcvS2NvbmZpZy02NC1cbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWc6NjU6Y29uZmlnIFNORF9TT0NfQkVMTFNcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzUKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGVzZSBhdWRpbyBkZXZpY2UgaWRlbnRpZmllcnMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVtOiBgU05EX01UUzY0YCwgYFNORF9QT1JUTUFOMlg0YCwgYW5kIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoZXNlIGFzIGxpa2VseSBiZWluZyBkZXZpY2UgZHJpdmVyIG5hbWVzIHdpdGhpbiBhIExpbnV4IHNvdW5kIHN5c3RlbSwgcHJvYmFibHkgQUxTQS4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucywgYFNORF9NVFM2NGAgc3VnZ2VzdHMgc29tZSBraW5kIG9mIE1JREkgVGltZSBTdGFtcCBpbnRlcmZhY2UsIHBvc3NpYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBkZXZpY2Ugd2l0aCA2NCBjaGFubmVscyBvciBmZWF0dXJlcyBjb25uZWN0ZWQgdG8gYSBNdXNpY2FsIFRpbWUgU3luYyBzb3VyY2UsIHdoaWxlIGBTTkRfUE9SVE1BTjJYNGAgaXMgYSBiaXQgbW9yZSBzdHJhaWdodGZvcndhcmQsIGluZGljYXRpbmcgYSBwb3J0IG1hbmFnZXIgd2l0aCB0d28gaW5wdXRzIGFuZCBmb3VyIG91dHB1dHMgLSBhbG1vc3QgY2VydGFpbmx5IGEgTUlESSBpbnRlcmZhY2UgbGlrZSBhIFVTQiBkZXZpY2UuIFRoZSBsYXN0IG9uZSwgYFNORF9TRVJJQUxfVTE2NTUwYCwgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFRoZSBgVTE2NTUwYCBzdHJvbmdseSBoaW50cyBhdCBhIGxlZ2FjeSBzZXJpYWwgcG9ydCBjb250cm9sbGVyLCBhbmQgc28gdGhpcyBpcyB0aGUgaW50ZXJlc3Rpbmcgb25lIHRvIHVucGFjayBmaXJzdCBzaW5jZSBhIGRldmljZSBkcml2ZXIgd291bGQgYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQgaWYgc2VyaWFsIHBvcnRzIGFyZSBiZWluZyB1c2VkIGFzIGEgc291cmNlIGZvciBNSURJLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBJIG5lZWQgdG8gY29uc2lkZXIgd2h5IHRoZXNlIGFyZSBiZWluZyBpZGVudGlmaWVkIGFzIGF1ZGlvIGRldmljZXMgYXQgYWxsIGFuZCBub3QganVzdCByYXcgc2VyaWFsIHBvcnRzIGFuZCBwb3J0IG1hbmFnZXJzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY29uc2lkZXIgd2hhdCBpcyBuZWVkZWQgZm9yIHRoaXMgaW4gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfTVRTNjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzb3VuZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvZHJpdmVycy9LY29uZmlnPTE0Nj1jb25maWcgU05EX01UUEFWXG4tLVxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1Ny1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxNTg6Y29uZmlnIFNORF9NVFM2NFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9QT1JUTUFOMlg0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZz0yMDU9Y29uZmlnIFNORF9NUFU0MDFcbi0tXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjE1LVxuc291bmQvZHJpdmVycy9LY29uZmlnOjIxNjpjb25maWcgU05EX1BPUlRNQU4yWDRcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtQb3J0bWFuIDJ4NCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9TRVJJQUxfVTE2NTUwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c291bmQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZz0xNTg9Y29uZmlnIFNORF9NVFM2NFxuLS1cbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xNzAtXG5zb3VuZC9kcml2ZXJzL0tjb25maWc6MTcxOmNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE3Mi1cdHRyaXN0YXRlIFwmIzM0O1VBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQXVkaW8gQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBsaXN0IG9mIGF1ZGlvIGNvbmZpZ3VyYXRpb25zOiBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGBTTkRfVklSTUlESWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBTTkRfU09DX0JFTExTYCByaW5ncyBhIGJlbGwsIHB1biBpbnRlbmRlZCEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IG9uZSBvZnRlbiByZWxpZXMgb24gc29tZSB1bmRlcmx5aW5nIE11bHRpLUZ1bmN0aW9uIERldmljZSAoTUZEKSBvciBJMkMgYnVzIGRlcGVuZGVuY2llcy4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4gTmVlZCB0byBhdm9pZCBhbnkgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIGVzcGVjaWFsbHkgd2l0aCB0aGF0IFNvdW5kIE9wZW4gRmlybXdhcmUgKFNPRikgc3R1ZmYgd2UmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRoaXMgc29ydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9zYW1zdW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XHRkZXBlbmRzIG9uIElOUFVUIFx1MDAyNlx1MDAyNiBJMkNcbiAgNjE6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiAgNjI6XHRcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcbiAgNjM6XHRcdHNlbGVjdCBTTkRfU09DX1dNODk2MlxuICA2NDpcdFxuICA2NTpcdGNvbmZpZyBTTkRfU09DX0JFTExTXG4gIDY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXCYjMzQ7XG4gIDY3Olx0XHRkZXBlbmRzIG9uIE1GRF9BUklaT05BIFx1MDAyNlx1MDAyNiBNRkRfV001MTAyIFx1MDAyNlx1MDAyNiBNRkRfV001MTEwIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IFNQSV9NQVNURVJcbiAgNjg6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiAgNjk6XHRcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcbiAgNzA6XHRcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxuICA3MTpcdFx0c2VsZWN0IFNORF9TT0NfV001MTEwXG4gIDcyOlx0XHRzZWxlY3QgU05EX1NPQ19XTTkwODFcbiAgNzM6XHRcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxuICA3NDpcdFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxuICA3NTpcdFxuICA3NjpcdGNvbmZpZyBTTkRfU09DX0xPV0xBTkRcbiAgNzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gTG93bGFuZFwmIzM0O1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBJMkNcbiAgNzk6XHRcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBdWRpbyBEcml2ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgU05EX1NPQ19CRUxMU2AgYXVkaW8gZHJpdmVyLiBTZWVtcyBsaWtlIGl0IGhhcyBhIHByZXR0eSBzcGVjaWZpYyBkZXBlbmRlbmN5IGNoYWluOiBgTUZEX0FSSVpPTkEgJmFtcDsmYW1wOyBNRkRfV001MTAyICZhbXA7JmFtcDsgTUZEX1dNNTExMCAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IFNQSV9NQVNURVJgLiBJdCYjMzk7cyBsaWtlbHkgYWxyaWdodCB0byBpbmNsdWRlIGl0LCBidXQgdGhlIHByaW1hcnkgYXVkaW8gZHJpdmVycyBJJiMzOTtkIGxlYW4gdG93YXJkcyByaWdodCBub3cgYXJlIGBTTkRfRFVNTVlgLCBgU05EX0FMT09QYCwgYW5kIGBTTkRfVklSTUlESWAuIEFsd2F5cyBnb29kIHRvIGNoZWNrIGZvciBhbnkgaGlkZGVuIHF1aXJrcy4gTGV0IG1lIGRpZyBpbnRvIGBTTkRfRFVNTVlgIGFuZCBtYWtlIHN1cmUgaXQgZG9lc24mIzM5O3QgaGF2ZSBhbnkgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0XHQgIFlvdSBkb24mIzM5O3QgbmVlZCB0aGlzIGRyaXZlciBpZiB5b3Ugb25seSB3YW50IHlvdXIgcGMtc3BlYWtlciB0byBiZWVwLlxuICA3MjpcdFx0ICBZb3UgZG9uJiMzOTt0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IGhhdmUgYSB0YWJsZXQgcGllem8gYmVlcGVyXG4gIDczOlx0XHQgIGluIHlvdXIgUEMgaW5zdGVhZCBvZiB0aGUgcmVhbCBzcGVha2VyLlxuICA3NDpcdFxuICA3NTpcdFx0ICBTYXkgTiBpZiB5b3UgaGF2ZSBhIHNvdW5kIGNhcmQuXG4gIDc2Olx0XHQgIFNheSBNIGlmIHlvdSBkb24mIzM5O3QuXG4gIDc3Olx0XHQgIFNheSBZIG9ubHkgaWYgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGRvLlxuICA3ODpcdFxuICA3OTpcdGNvbmZpZyBTTkRfRFVNTVlcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O0R1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFwmIzM0O1xuICA4MTpcdFx0c2VsZWN0IFNORF9QQ01cbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHRoZSBkdW1teSBkcml2ZXIuICBUaGlzIGRyaXZlciBkb2VzXG4gIDg0Olx0XHQgIG5vdGhpbmcsIGJ1dCBlbXVsYXRlcyB2YXJpb3VzIG1peGVyIGNvbnRyb2xzIGFuZCBQQ00gZGV2aWNlcy5cbiAgODU6XHRcbiAgODY6XHRcdCAgWW91IGRvbiYjMzk7dCBuZWVkIHRoaXMgdW5sZXNzIHlvdSYjMzk7cmUgdGVzdGluZyB0aGUgaGFyZHdhcmUgc3VwcG9ydFxuICA4NzpcdFx0ICBvZiBwcm9ncmFtcyB1c2luZyB0aGUgQUxTQSBBUEkuXG4gIDg4Olx0XG4gIDg5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgOTA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWR1bW15LlxuICA5MTpcdFxuICA5MjpcdGNvbmZpZyBTTkRfQUxPT1BcbiAgOTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgbG9vcGJhY2sgZHJpdmVyIChQQ00pXCYjMzQ7XG4gIDk0Olx0XHRzZWxlY3QgU05EX1BDTVxuICA5NTpcdFx0c2VsZWN0IFNORF9USU1FUlxuICA5NjpcdFx0aGVscFxuICA5NzpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUENNIGxvb3BiYWNrIGRldmljZS5cbiAgOTg6XHRcdCAgVGhpcyBtb2R1bGUgcmV0dXJucyBwbGF5ZWQgc2FtcGxlcyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlIHVzaW5nXG4gIDk5Olx0XHQgIHRoZSBzdGFuZGFyZCBBTFNBIFBDTSBkZXZpY2UuIFRoZSBkZXZpY2VzIGFyZSByb3V0ZWQgMC1cdTAwM2UxIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNvdW5kIERyaXZlcnMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGFuZCBgU05EX1ZJUk1JRElgIGFyZSBhbGwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgZ2VuZXJpYyBzb3VuZCBkcml2ZXJzIHRoYXQgZG9uJiMzOTt0IHRpZSB0aGVtc2VsdmVzIHRvIGFueSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGF0JiMzOTtzIGdvb2QsIGtlZXBzIHRoaW5ncyBmbGV4aWJsZS4gQW5kIGBTTkRfTVBVNDAxYCBzZWVtcyB0byBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBhcyB3ZWxsLiBUaGVuIHdlIGhhdmUgYFNORF9NVFM2NGAuIFRoYXQgb25lJiMzOTtzIGdvdCBhIGRlcGVuZGVuY3ksIHRob3VnaC4gSXQmIzM5O3MgY29ubmVjdGVkIHRvIGBQQVJQT1JUYC4gQWxyaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIG9uIHRoYXQgYFBBUlBPUlRgIGRlcGVuZGVuY3kgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGF0JiMzOTtzIGFsbCBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0aGVscFxuIDE1MTpcdFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxuIDE1MjpcdFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XG4gMTUzOlx0XHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24mIzM5O3QgdXNlZCBmb3IgdGhlIHBvcnQuXG4gMTU0Olx0XG4gMTU1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLW10cGF2LlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBTTkRfTVRTNjRcbiAxNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiAxNjA6XHRcdGRlcGVuZHMgb24gUEFSUE9SVFxuIDE2MTpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTYyOlx0XHRoZWxwXG4gMTYzOlx0XHQgIFRoZSBFU0kgTWlkaXRlcm1pbmFsIDQxNDAgaXMgYSA0IEluIDQgT3V0IE1JREkgSW50ZXJmYWNlIHdpdGggXG4gMTY0Olx0XHQgIGFkZGl0aW9uYWwgU01QVEUgVGltZWNvZGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydC5cbiAxNjU6XHRcbiAxNjY6XHRcdCAgU2F5ICYjMzk7WSYjMzk7IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhpcyBkZXZpY2UuXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICYjMzk7TSYjMzk7IGhlcmU6IHRoZSBtb2R1bGUgXG4gMTY5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHM2NC5cbiAxNzA6XHRcbiAxNzE6XHRjb25maWcgU05EX1NFUklBTF9VMTY1NTBcbiAxNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1VBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcJiMzNDtcbiAxNzM6XHRcdGRlcGVuZHMgb24gSEFTX0lPUE9SVFxuIDE3NDpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgTUlESSBzZXJpYWwgcG9ydCBpbnRlcmZhY2VzLCBzYXkgWSBoZXJlXG4gMTc3Olx0XHQgIGFuZCByZWFkIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9zZXJpYWwtdTE2NTUwLnJzdFx1MDAzZS5cbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBzZXJpYWwgVUFSVHMgMTY1NTAgYW5kIGJldHRlci5cbiAxNzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgVnVsbmVyYWJpbGl0aWVzIGluIFNvdW5kIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YCBib3RoIHJlbHkgb24gYFBBUlBPUlRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYCBuZWVkcyBgSEFTX0lPUE9SVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHRoZXNlIHNwZWNpZmljIHNvdW5kIGRyaXZlcnMuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGRldnB0ci0mZ3Q7aWRgIChvciBgcGRldi0mZ3Q7aWRgKSBpcyBzb21ldGltZXMgZXhjZWVkaW5nIHRoZSBib3VuZHMgb2YgdGhlIGBTTkRSVl9DQVJEU2AgYXJyYXksIHdoaWNoIGlzIHR5cGljYWxseSBvZiBzaXplIDguCgpUaGUgcmVhbCBraWNrZXIgaXMgdGhhdCBpZiBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgb3IgZ2VuZXJhdGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIGl04oCZcyBnb2luZyB0byBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBleHBsb2l0YWJsZS4gVGhhdCYjMzk7cyBhIHBlcmZlY3QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGxpc3QgdG8gc3RhcnQgd2l0aC4KCkkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IGludmVzdGlnYXRlOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFdhaXQsIG5vdyB0aGF0IEkgbG9vayBhdCBgU05EX1NPQ19CRUxMU2AsIGl0IGhhcyBhIGJ1bmNoIG9mIGRlcGVuZGVuY2llczogYE1GRF9BUklaT05BICZhbXA7JmFtcDsgTUZEX1dNNTEwMiAmYW1wOyZhbXA7IE1GRF9XTTUxMTAgJmFtcDsmYW1wOyBJMkMgJmFtcDsmYW1wOyBTUElfTUFTVEVSYC4gU3l6a2FsbGVyIG1pZ2h0IGJhbGsgYXQgdGhhdC4gSXQgbWlnaHQgYmUgc2ltcGxlciB0byBqdXN0IGluY2x1ZGUgYFNORF9TT0NfQkVMTFNgIGFuZCBob3BlIGl0IGZpZ3VyZXMgaXQgb3V0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgU05EX1ZJUk1JRElgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvZHJpdmVycy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcbiAxMjE6XHRcdCAgSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBvciBwYXR0ZXJuLWJhc2VkIGRhdGEgaW50byB0aGUgY2FwdHVyZSBzdHJlYW0sXG4gMTIyOlx0XHQgIGNoZWNrIHRoZSBwbGF5YmFjayBzdHJlYW0gZm9yIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIHBhdHRlcm4sIGluamVjdFxuIDEyMzpcdFx0ICB0aW1lIGRlbGF5cyBkdXJpbmcgY2FwdHVyZS9wbGF5YmFjaywgcmVkZWZpbmUgdGhlIFJFU0VUIGlvY3RsIG9wZXJhdGlvblxuIDEyNDpcdFx0ICB0byBwZXJmb3JtIHRoZSBQQ00gbWlkZGxlIGxheWVyIHRlc3RpbmcgYW5kIGluamVjdCBlcnJvcnMgZHVyaW5nIHRoZVxuIDEyNTpcdFx0ICBQQ00gY2FsbGJhY2tzLiBJdCBzdXBwb3J0cyBib3RoIGludGVybGVhdmVkIGFuZCBub24taW50ZXJsZWF2ZWQgYWNjZXNzXG4gMTI2Olx0XHQgIG1vZGVzLiBZb3UgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZnRlc3QgaW4gdGhlICYjMzk7YWxzYSYjMzk7XG4gMTI3Olx0XHQgIHNlbGZ0ZXN0cyBmb2xkZXIuXG4gMTI4Olx0XG4gMTI5Olx0Y29uZmlnIFNORF9WSVJNSURJXG4gMTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIE1JREkgc291bmRjYXJkXCYjMzQ7XG4gMTMxOlx0XHRkZXBlbmRzIG9uIFNORF9TRVFVRU5DRVJcbiAxMzI6XHRcdHNlbGVjdCBTTkRfVElNRVJcbiAxMzM6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDEzNDpcdFx0c2VsZWN0IFNORF9TRVFfVklSTUlESVxuIDEzNTpcdFx0c2VsZWN0IFNORF9TRVFfTUlESV9FVkVOVFxuIDEzNjpcdFx0aGVscFxuIDEzNzpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgdGhlIHZpcnR1YWwgTUlESSBkcml2ZXIuICBUaGlzIGRyaXZlclxuIDEzODpcdFx0ICBhbGxvd3MgdG8gY29ubmVjdCBhcHBsaWNhdGlvbnMgdXNpbmcgcmF3IE1JREkgZGV2aWNlcyB0b1xuIDEzOTpcdFx0ICBzZXF1ZW5jZXIgY2xpZW50cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBDaGVja2luZyBmb3IgU291bmQgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbW1lZGlhdGVseSBhIGNvbm5lY3Rpb24gY2xpY2tzOiBgU05EX1ZJUk1JRElgIHJlbGllcyBvbiBgU05EX1NFUVVFTkNFUmAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdmlydHVhbCBNSURJIG5lZWRzIHRoZSBzZXF1ZW5jZXIgaW5mcmFzdHJ1Y3R1cmUgdG8gZnVuY3Rpb24uIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgcmVsYXRpb25zaGlwIGlzIHNvdW5kLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBTTkRfTVBVNDAxYCBuZXh0LCBhcyB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIGluIHRoaXMgc291bmQgcHV6emxlIGFuZCBsaWtlbHkgdG8gaGF2ZSBpbXBsaWNhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRob3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL2RyaXZlcnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NlcmlhbC1taWRpLnlhbWxcdTAwM2VcbiAyMDE6XHRcbiAyMDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIwMzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtc2VyaWFsLWdlbmVyaWMuXG4gMjA0Olx0XG4gMjA1Olx0Y29uZmlnIFNORF9NUFU0MDFcbiAyMDY6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclwmIzM0O1xuIDIwNzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9QT1JUXG4gMjA4Olx0XHRzZWxlY3QgU05EX01QVTQwMV9VQVJUXG4gMjA5Olx0XHRoZWxwXG4gMjEwOlx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNSURJIHBvcnRzIGNvbXBhdGlibGUgd2l0aFxuIDIxMTpcdFx0ICB0aGUgUm9sYW5kIE1QVS00MDEgaW50ZXJmYWNlIGluIFVBUlQgbW9kZS5cbiAyMTI6XHRcbiAyMTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIxNDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXB1NDAxLlxuIDIxNTpcdFxuIDIxNjpcdGNvbmZpZyBTTkRfUE9SVE1BTjJYNFxuIDIxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UG9ydG1hbiAyeDQgZHJpdmVyXCYjMzQ7XG4gMjE4Olx0XHRkZXBlbmRzIG9uIFBBUlBPUlRcbiAyMTk6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIGRlcGVuZGVuY2llcywgcGhyYXNlZCBhcyBpZiB0aGV5JiMzOTtyZSBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3MuCgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgbWFwIGlzIHRlbGxpbmcgbWUgdGhhdCB0aGUgc291bmQgbW9kdWxlIGBTTkRfTVBVNDAxYCBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYEhBU19JT1BPUlRgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGNsYXNzaWMgTUlESSBpbnRlcmZhY2UsIG5lZWRzIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhlbiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBTTkRfUE9SVE1BTjJYNGAsIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGRlcGVuZGVudCBvbiBgUEFSUE9SVGAgLSBtZWFuaW5nIHBhcmFsbGVsIHBvcnQuIFRoYXQmIzM5O3MgYSBiaXQgbGVzcyBjb21tb24gbm93YWRheXMsIGJ1dCBhZ2FpbiwgY29tcGxldGVseSBsb2dpY2FsLiBJdCB3b3VsZG4mIzM5O3QgZnVuY3Rpb24gd2l0aG91dCB0aGUgcGFyYWxsZWwgcG9ydC4gT2theSwgSSYjMzk7dmUgZ290IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biwgd2hpY2ggaXMgZ29vZCBob3VzZWtlZXBpbmcgZm9yIHRoZSBjdXJyZW50IHByb2plY3QuIE5vdyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBgU05EX01UUzY0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9kcml2ZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0aGVscFxuIDE1MTpcdFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxuIDE1MjpcdFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XG4gMTUzOlx0XHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24mIzM5O3QgdXNlZCBmb3IgdGhlIHBvcnQuXG4gMTU0Olx0XG4gMTU1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLW10cGF2LlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBTTkRfTVRTNjRcbiAxNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0VTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcJiMzNDtcbiAxNjA6XHRcdGRlcGVuZHMgb24gUEFSUE9SVFxuIDE2MTpcdFx0c2VsZWN0IFNORF9SQVdNSURJXG4gMTYyOlx0XHRoZWxwXG4gMTYzOlx0XHQgIFRoZSBFU0kgTWlkaXRlcm1pbmFsIDQxNDAgaXMgYSA0IEluIDQgT3V0IE1JREkgSW50ZXJmYWNlIHdpdGggXG4gMTY0Olx0XHQgIGFkZGl0aW9uYWwgU01QVEUgVGltZWNvZGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydC5cbiAxNjU6XHRcbiAxNjY6XHRcdCAgU2F5ICYjMzk7WSYjMzk7IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhpcyBkZXZpY2UuXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICYjMzk7TSYjMzk7IGhlcmU6IHRoZSBtb2R1bGUgXG4gMTY5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHM2NC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBzb3VuZCBkZXZpY2UgY29uZmlndXJhdGlvbnMgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBTTkRfTVRTNjRgIHJlbGllcyBvbiBgUEFSUE9SVGAuIEFscmlnaHQsIHRoYXQmIzM5O3Mgbm90IHVuZXhwZWN0ZWQ7IHRoZXNlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvZnRlbiBjcm9wIHVwLgoKU28sIGluIG9yZGVyIHRvIGdldCBgU05EX01UUzY0YCB0byB3b3JrIGNvcnJlY3RseSwgSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGVuYWJsZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX1ZJUk1JRElgLCBgU05EX1NFUVVFTkNFUmAsIGBTTkRfTVBVNDAxYCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFBBUlBPUlRgIGFuZCBgU05EX1NPQ19CRUxMU2AuIFRoYXQgYWxsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIGF0IGxlYXN0IGluaXRpYWxseS4KCkJ1dCB3YWl0IGEgbWludXRlLCBgU05EX1NPQ19CRUxMU2AgaXMgbGlrZWx5IHRvIGhhdmUgYSBidW5jaCBvZiBpdHMgb3duIGRlcGVuZGVuY2llcyBJJiMzOTtsbCBuZWVkIHRvIHNvcnQgb3V0LCBvciBhdCBsZWFzdCBiZSBhd2FyZSBvZi4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYHNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWdgLiBHb29kIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvc29jL3NhbXN1bmcvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdGRlcGVuZHMgb24gSU5QVVQgXHUwMDI2XHUwMDI2IEkyQ1xuICA2MTpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuICA2MjpcdFx0c2VsZWN0IFNORF9TQU1TVU5HX0kyU1xuICA2MzpcdFx0c2VsZWN0IFNORF9TT0NfV004OTYyXG4gIDY0Olx0XG4gIDY1Olx0Y29uZmlnIFNORF9TT0NfQkVMTFNcbiAgNjY6XHRcdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gQmVsbHNcJiMzNDtcbiAgNjc6XHRcdGRlcGVuZHMgb24gTUZEX0FSSVpPTkEgXHUwMDI2XHUwMDI2IE1GRF9XTTUxMDIgXHUwMDI2XHUwMDI2IE1GRF9XTTUxMTAgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgU1BJX01BU1RFUlxuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuICA2OTpcdFx0c2VsZWN0IFNORF9TQU1TVU5HX0kyU1xuICA3MDpcdFx0c2VsZWN0IFNORF9TT0NfV001MTAyXG4gIDcxOlx0XHRzZWxlY3QgU05EX1NPQ19XTTUxMTBcbiAgNzI6XHRcdHNlbGVjdCBTTkRfU09DX1dNOTA4MVxuICA3MzpcdFx0c2VsZWN0IFNORF9TT0NfV00wMDEwXG4gIDc0Olx0XHRzZWxlY3QgU05EX1NPQ19XTTEyNTBfRVYxXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIFNORF9TT0NfTE9XTEFORFxuICA3NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEkyQ1xuICA3OTpcdFx0ZGVwZW5kcyBvbiBNQUNIX1dMRl9DUkFHR182NDEwIHx8IENPTVBJTEVfVEVTVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipEZXBlbmRlbmNpZXMgYW5kIEluY2x1c2lvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gYFNORF9TT0NfQkVMTFNgIG5lZWRzIHNldmVyYWwgb3RoZXIgbW9kdWxlcyB0byBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCByZWxpZXMgb24gYE1GRF9BUklaT05BYCwgYE1GRF9XTTUxMDJgLCBgTUZEX1dNNTExMGAsIHRoZSBgSTJDYCBpbnRlcmZhY2UsIGFuZCB0aGUgYFNQSV9NQVNURVJgIGludGVyZmFjZS4gSG1tLCBnaXZlbiB0aGF0IGRlcGVuZGVuY3kgdHJlZSwgSSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBNRkRfQVJJWk9OQWAsIGBNRkRfV001MTAyYCwgYW5kIGBNRkRfV001MTEwYC4gVGhleSYjMzk7cmUgaW50ZWdyYWwsIGFuZCBJIGNhbiYjMzk7dCBzZWUgYSBjbGVhbiB3YXkgYXJvdW5kIHRoYXQuIE1ha2VzIHNlbnNlLgoKTm93LCBsZXQgbWUgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYE1GRF9BUklaT05BYCBtb2R1bGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0IG9uZSwgZXNwZWNpYWxseSBpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRkRfQVJJWk9OQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWZkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21mZC9LY29uZmlnPTIwNTQ9Y29uZmlnIE1GRF9WWDg1NVxuLS1cbmRyaXZlcnMvbWZkL0tjb25maWctMjA2Mi1cbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2Mzpjb25maWcgTUZEX0FSSVpPTkFcbmRyaXZlcnMvbWZkL0tjb25maWctMjA2NC1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNjgtXG5kcml2ZXJzL21mZC9LY29uZmlnOjIwNjk6Y29uZmlnIE1GRF9BUklaT05BX0kyQ1xuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDcwLVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljL1dvbGZzb24gTWljcm9lbGVjdHJvbmljcyBBcml6b25hIHBsYXRmb3JtIHdpdGggSTJDXCYjMzQ7XG4tLVxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDc3LVxuZHJpdmVycy9tZmQvS2NvbmZpZzoyMDc4OmNvbmZpZyBNRkRfQVJJWk9OQV9TUElcbmRyaXZlcnMvbWZkL0tjb25maWctMjA3OS1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBMb2dpYy9Xb2xmc29uIE1pY3JvZWxlY3Ryb25pY3MgQXJpem9uYSBwbGF0Zm9ybSB3aXRoIFNQSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3NAoJCQkJCQkJb3V0cHV0OiAyOTAKCQkJCQkJCXRob3VnaHRzOiA3OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgYW5kIEltcG9ydGFuY2Ugb2YgU291bmQgRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFmdGVyIHRoaXMgcGF0Y2gsIHdoaWNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNrcyBvbiBwbGF0Zm9ybSBkZXZpY2UgSURzIHdpdGhpbiBzb3VuZCBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgaW5jbHVkZSBgU05EX1NPQ19CRUxMU2AgYW5kIGxldCB0aGUgZnV6emVyIHNvcnQgb3V0IGRlcGVuZGVuY2llcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VjY2Vzc2Z1bCBmdXp6aW5nLCBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGFuZCBgU05EX1ZJUk1JRElgIHNlZW0gbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBzaW5jZSB0aGV5JiMzOTtyZSBsZXNzIGhhcmR3YXJlLWRlcGVuZGVudC4KCkkgZGVjaWRlZCB0byBsaXN0IHRoZSBjb25maWdzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG1vZGlmaWVkIGZpbGVzLiBUaGF0IG1lYW5zIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnMgbmVlZCB0byBiZSBjb25zaWRlcmVkOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGFuZCBgU05EX1NPQ19CRUxMU2AuCgpUaGUgY29ycmVzcG9uZGluZyBwcm9iZSBmdW5jdGlvbnMgYXJlOiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhleSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBpbml0aWFsbHkgcmFpc2VkIGEgZmxhZyBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBIb3dldmVyLCB0aGVzZSBhcmUgKnByb2JlKiBmdW5jdGlvbnMsIHNvIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gdG8gYmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIHBsYXRmb3JtIGRyaXZlciBzdHJ1Y3QsIG1ha2luZyB0aGVtIG5vbi1pbmxpbmVkIGFuZCBoYXZpbmcgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhpcyBpcyBwZXJmZWN0bHkgYWNjZXB0YWJsZTsgaXQmIzM5O3MgdGhlIGNvcnJlY3QgYXBwcm9hY2ggdG8gbGlzdCB0aGVtLiBJIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhlc2Ugc3RhdGljIHByb2Jlcy4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIHRoZSByZWFzb25pbmc6IHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBmdW5jdGlvbmFsIGJ1Zywgc3BlY2lmaWNhbGx5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gcHJvYmUgZnVuY3Rpb25zIHdoZW4gZGVhbGluZyB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0ZWQgcGxhdGZvcm0gZGV2aWNlcy4gU2luY2UgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCB2aXJ0dWFsbHksIGl0JiMzOTtzIGRlZmluaXRlbHkgZnV6emFibGUsIGFuZCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0LgoKRmluYWxseSwgSSBjaGVja2VkIGZvciBkZXBlbmRlbmNpZXMgYW5kIHJlbWVtYmVyZWQgdG8gYWRkIHRoZSBuZWNlc3NhcnkgY29uZmlncy4gYFNORF9TRVFVRU5DRVJgIGlzIHJlcXVpcmVkIGZvciBgU05EX1ZJUk1JRElgLCBhbmQgYFBBUlBPUlRgIGlzIG5lZWRlZCBmb3IgYm90aCBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YC4gSSYjMzk7bSBhbHNvIGF3YXJlIHRoYXQgYEhBU19JT1BPUlRgIGlzIG5lZWRlZCBmb3IgYFNORF9NUFU0MDFgIGFuZCBgU05EX1NFUklBTF9VMTY1NTBgLCB3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBvbiB4ODYsIHdoaWNoIGlzIGdvb2QuCgpTbywgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiBjb25maWdzIGZvciBmdXp6aW5nIGlzOiBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGBTTkRfVklSTUlESWAsIGBTTkRfU09DX0JFTExTYCwgYFNORF9TRVFVRU5DRVJgLCBhbmQgYFBBUlBPUlRgLgoKTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NORF9BTE9PUCYjMzQ7LAogICAgJiMzNDtTTkRfRFVNTVkmIzM0OywKICAgICYjMzQ7U05EX01QVTQwMSYjMzQ7LAogICAgJiMzNDtTTkRfTVRTNjQmIzM0OywKICAgICYjMzQ7U05EX1BPUlRNQU4yWDQmIzM0OywKICAgICYjMzQ7U05EX1NFUklBTF9VMTY1NTAmIzM0OywKICAgICYjMzQ7U05EX1ZJUk1JREkmIzM0OywKICAgICYjMzQ7U05EX1NPQ19CRUxMUyYjMzQ7LAogICAgJiMzNDtTTkRfU0VRVUVOQ0VSJiMzNDssCiAgICAmIzM0O1BBUlBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29wYmFja19wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfZHVtbXlfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX21wdTQwMV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfbXRzNjRfcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3BvcnRtYW5fcHJvYmUmIzM0OywKICAgICYjMzQ7c25kX3NlcmlhbF9wcm9iZSYjMzQ7LAogICAgJiMzNDtzbmRfdmlybWlkaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtiZWxsc19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDozOC4zNDg2NjQ0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzIwNjM2MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNORF9BTE9PUFwiLFxuICAgIFwiU05EX0RVTU1ZXCIsXG4gICAgXCJTTkRfTVBVNDAxXCIsXG4gICAgXCJTTkRfTVRTNjRcIixcbiAgICBcIlNORF9QT1JUTUFOMlg0XCIsXG4gICAgXCJTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICAgIFwiU05EX1ZJUk1JRElcIixcbiAgICBcIlNORF9TT0NfQkVMTFNcIixcbiAgICBcIlNORF9TRVFVRU5DRVJcIixcbiAgICBcIlBBUlBPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wYmFja19wcm9iZVwiLFxuICAgIFwic25kX2R1bW15X3Byb2JlXCIsXG4gICAgXCJzbmRfbXB1NDAxX3Byb2JlXCIsXG4gICAgXCJzbmRfbXRzNjRfcHJvYmVcIixcbiAgICBcInNuZF9wb3J0bWFuX3Byb2JlXCIsXG4gICAgXCJzbmRfc2VyaWFsX3Byb2JlXCIsXG4gICAgXCJzbmRfdmlybWlkaV9wcm9iZVwiLFxuICAgIFwiYmVsbHNfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXIncyBkZXZpY2UgY3JlYXRpb24gcHNldWRvLXN5c2NhbGxzKSwgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNoYW5nZXMgZml4IGEgZnVuY3Rpb25hbCBidWcuIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6MzguMzQ4NjcyNzcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzE4ODIwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYzk5Y2JjZjg5MDc4MGU1MjY2MTI3NjM4ZDUzMzI2OGMyZmE5YTNhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzQ6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9hbG9vcC5jIGIvc291bmQvZHJpdmVycy9hbG9vcC5jXFxuaW5kZXggMDZiZmUwOWVhZTFhMi4uOTUyMGQzNDMxYTJlZSAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcXG4rKysgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcXG5AQCAtMTgwMiw2ICsxODAyLDkgQEAgc3RhdGljIGludCBsb29wYmFja19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBkZXYgPSBkZXZwdHItXFx1MDAzZWlkO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdGVyciA9IHNuZF9kZXZtX2NhcmRfbmV3KFxcdTAwMjZkZXZwdHItXFx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXFxuIFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL2R1bW15LmMgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvZHVtbXkuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvZHVtbXkuY1xcbkBAIC0xMDE3LDYgKzEwMTcsOSBAQCBzdGF0aWMgaW50IHNuZF9kdW1teV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBpZHgsIGVycjtcXG4gXFx0aW50IGRldiA9IGRldnB0ci1cXHUwMDNlaWQ7XFxuIFxcbitcXHRpZiAoZGV2IFxcdTAwM2MgMCB8fCBkZXYgXFx1MDAzZT0gU05EUlZfQ0FSRFMpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4gXFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXFx1MDAyNmRldnB0ci1cXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcXG4gXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBzbmRfZHVtbXkpLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuYyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXFxuaW5kZXggYzIxN2M0MjdiZjFlMC4uYTUxOWNlOWViOTJmNCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jXFxuQEAgLTg5LDYgKzg5LDkgQEAgc3RhdGljIGludCBzbmRfbXB1NDAxX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcXG4gXFx0aW50IGVycjtcXG4gXFx0c3RydWN0IHNuZF9jYXJkICpjYXJkO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdGlmIChwb3J0W2Rldl0gPT0gU05EUlZfQVVUT19QT1JUKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNmRldnB0ci1cXHUwMDNlZGV2LCBcXFwic3BlY2lmeSBwb3J0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvbXRzNjQuYyBiL3NvdW5kL2RyaXZlcnMvbXRzNjQuY1xcbmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0XFxuLS0tIGEvc291bmQvZHJpdmVycy9tdHM2NC5jXFxuKysrIGIvc291bmQvZHJpdmVycy9tdHM2NC5jXFxuQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgaW50IHNuZF9tdHM2NF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbiBcXG4tXFx0aWYgKGRldiBcXHUwMDNlPSBTTkRSVl9DQVJEUylcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0aWYgKCFlbmFibGVbZGV2XSkgXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXFxuaW5kZXggZGNjMDg5OWNmYjk5YS4uMGE3ODE1ODgwOGU3ZCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuY1xcbisrKyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXFxuQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgaW50IHNuZF9wb3J0bWFuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdHAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XFxuIFxcbi1cXHRpZiAoZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRpZiAoZGV2IFxcdTAwM2MgMCB8fCBkZXYgXFx1MDAzZT0gU05EUlZfQ0FSRFMpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXHRpZiAoIWVuYWJsZVtkZXZdKSBcXG4gXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcXG5pbmRleCAzYzI4OTYxMDkxYjEyLi5hZWMwMmExNWFiYzk4IDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXFxuKysrIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmNcXG5AQCAtODQ2LDYgKzg0Niw5IEBAIHN0YXRpYyBpbnQgc25kX3NlcmlhbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXFxuIFxcdGludCBlcnI7XFxuIFxcdGludCBkZXYgPSBkZXZwdHItXFx1MDAzZWlkO1xcbiBcXG4rXFx0aWYgKGRldiBcXHUwMDNjIDAgfHwgZGV2IFxcdTAwM2U9IFNORFJWX0NBUkRTKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XFxuIFxcdGNhc2UgU05EUlZfU0VSSUFMX1NPVU5EQ0FOVkFTOlxcbiBcXHRcXHRpbnNbZGV2XSA9IDE7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcXG5pbmRleCBhMjA0ZjQyZDEwMjY1Li4wYTkzMTNlZWI4OThhIDEwMDY0NFxcbi0tLSBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jXFxuKysrIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgaW50IHNuZF92aXJtaWRpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcXG4gXFx0aW50IGlkeCwgZXJyO1xcbiBcXHRpbnQgZGV2ID0gZGV2cHRyLVxcdTAwM2VpZDtcXG4gXFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwIHx8IGRldiBcXHUwMDNlPSBTTkRSVl9DQVJEUylcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcXHUwMDI2ZGV2cHRyLVxcdTAwM2VkZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLFxcbiBcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IHNuZF9jYXJkX3Zpcm1pZGkpLCBcXHUwMDI2Y2FyZCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jIGIvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xcbmluZGV4IGZjNDk2M2QzYjk5YmYuLjNhMDM1MjQ5OTJiZjcgMTAwNjQ0XFxuLS0tIGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuY1xcbisrKyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmNcXG5AQCAtNDcwLDYgKzQ3MCw5IEBAIHN0YXRpYyBpbnQgYmVsbHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0aWYgKHBkZXYtXFx1MDAzZWlkIFxcdTAwM2MgMCB8fCBwZGV2LVxcdTAwM2VpZCBcXHUwMDNlPSBBUlJBWV9TSVpFKGJlbGxzX2NhcmRzKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRiZWxsc19jYXJkc1twZGV2LVxcdTAwM2VpZF0uZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gXFxuIFxcdHJldCA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9jYXJkKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiZWxsc19jYXJkc1twZGV2LVxcdTAwM2VpZF0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDozOC43ODExOTY0ODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NzI4ODA5MjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTkRfQUxPT1BcIixcbiAgICBcIlNORF9EVU1NWVwiLFxuICAgIFwiU05EX01QVTQwMVwiLFxuICAgIFwiU05EX01UUzY0XCIsXG4gICAgXCJTTkRfUE9SVE1BTjJYNFwiLFxuICAgIFwiU05EX1NFUklBTF9VMTY1NTBcIixcbiAgICBcIlNORF9WSVJNSURJXCIsXG4gICAgXCJTTkRfU09DX0JFTExTXCIsXG4gICAgXCJTTkRfU0VRVUVOQ0VSXCIsXG4gICAgXCJQQVJQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcGJhY2tfcHJvYmVcIixcbiAgICBcInNuZF9kdW1teV9wcm9iZVwiLFxuICAgIFwic25kX21wdTQwMV9wcm9iZVwiLFxuICAgIFwic25kX210czY0X3Byb2JlXCIsXG4gICAgXCJzbmRfcG9ydG1hbl9wcm9iZVwiLFxuICAgIFwic25kX3NlcmlhbF9wcm9iZVwiLFxuICAgIFwic25kX3Zpcm1pZGlfcHJvYmVcIixcbiAgICBcImJlbGxzX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJ3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJjOTljYmNmODkwNzgwZTUyNjYxMjc2MzhkNTMzMjY4YzJmYTlhM2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM0OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9hbG9vcC5jIGIvc291bmQvZHJpdmVycy9hbG9vcC5jXG5pbmRleCAwNmJmZTA5ZWFlMWEyLi45NTIwZDM0MzFhMmVlIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9hbG9vcC5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL2Fsb29wLmNcbkBAIC0xODAyLDYgKzE4MDIsOSBAQCBzdGF0aWMgaW50IGxvb3BiYWNrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cilcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXHRpbnQgZXJyO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbG9vcGJhY2spLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9kdW1teS5jIGIvc291bmQvZHJpdmVycy9kdW1teS5jXG5pbmRleCA3MjgzZjBmMTg4MTNkLi40MWU3OTU3NGM5MzAyIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9kdW1teS5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmNcbkBAIC0xMDE3LDYgKzEwMTcsOSBAQCBzdGF0aWMgaW50IHNuZF9kdW1teV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXG4gXHRpbnQgaWR4LCBlcnI7XG4gXHRpbnQgZGV2ID0gZGV2cHRyLVx1MDAzZWlkO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRlcnIgPSBzbmRfZGV2bV9jYXJkX25ldyhcdTAwMjZkZXZwdHItXHUwMDNlZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSxcbiBcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgc25kX2R1bW15KSwgXHUwMDI2Y2FyZCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbmluZGV4IGMyMTdjNDI3YmYxZTAuLmE1MTljZTllYjkyZjQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDEuY1xuKysrIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmNcbkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBpbnQgc25kX21wdTQwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpXG4gXHRpbnQgZXJyO1xuIFx0c3RydWN0IHNuZF9jYXJkICpjYXJkO1xuIFxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRpZiAocG9ydFtkZXZdID09IFNORFJWX0FVVE9fUE9SVCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNmRldnB0ci1cdTAwM2VkZXYsIFwic3BlY2lmeSBwb3J0XFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL210czY0LmMgYi9zb3VuZC9kcml2ZXJzL210czY0LmNcbmluZGV4IDM2ZTllYWIyMDRjYWMuLjNmZmY1Y2ZjNGQ3MWYgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL210czY0LmNcbisrKyBiL3NvdW5kL2RyaXZlcnMvbXRzNjQuY1xuQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgaW50IHNuZF9tdHM2NF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXG4tXHRpZiAoZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4rXHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdGlmICghZW5hYmxlW2Rldl0pIFxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BvcnRtYW4yeDQuYyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5pbmRleCBkY2MwODk5Y2ZiOTlhLi4wYTc4MTU4ODA4ZTdkIDEwMDY0NFxuLS0tIGEvc291bmQvZHJpdmVycy9wb3J0bWFuMng0LmNcbisrKyBiL3NvdW5kL2RyaXZlcnMvcG9ydG1hbjJ4NC5jXG5AQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyBpbnQgc25kX3BvcnRtYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuIFxuLVx0aWYgKGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuK1x0aWYgKGRldiBcdTAwM2MgMCB8fCBkZXYgXHUwMDNlPSBTTkRSVl9DQVJEUylcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRpZiAoIWVuYWJsZVtkZXZdKSBcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG5kaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuY1xuaW5kZXggM2MyODk2MTA5MWIxMi4uYWVjMDJhMTVhYmM5OCAxMDA2NDRcbi0tLSBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jXG4rKysgYi9zb3VuZC9kcml2ZXJzL3NlcmlhbC11MTY1NTAuY1xuQEAgLTg0Niw2ICs4NDYsOSBAQCBzdGF0aWMgaW50IHNuZF9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGVycjtcbiBcdGludCBkZXYgPSBkZXZwdHItXHUwMDNlaWQ7XG4gXG4rXHRpZiAoZGV2IFx1MDAzYyAwIHx8IGRldiBcdTAwM2U9IFNORFJWX0NBUkRTKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdHN3aXRjaCAoYWRhcHRvcltkZXZdKSB7XG4gXHRjYXNlIFNORFJWX1NFUklBTF9TT1VORENBTlZBUzpcbiBcdFx0aW5zW2Rldl0gPSAxO1xuZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbmluZGV4IGEyMDRmNDJkMTAyNjUuLjBhOTMxM2VlYjg5OGEgMTAwNjQ0XG4tLS0gYS9zb3VuZC9kcml2ZXJzL3Zpcm1pZGkuY1xuKysrIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmNcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBpbnQgc25kX3Zpcm1pZGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKVxuIFx0aW50IGlkeCwgZXJyO1xuIFx0aW50IGRldiA9IGRldnB0ci1cdTAwM2VpZDtcbiBcbitcdGlmIChkZXYgXHUwMDNjIDAgfHwgZGV2IFx1MDAzZT0gU05EUlZfQ0FSRFMpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0ZXJyID0gc25kX2Rldm1fY2FyZF9uZXcoXHUwMDI2ZGV2cHRyLVx1MDAzZWRldiwgaW5kZXhbZGV2XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsXG4gXHRcdFx0XHRzaXplb2Yoc3RydWN0IHNuZF9jYXJkX3Zpcm1pZGkpLCBcdTAwMjZjYXJkKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvc291bmQvc29jL3NhbXN1bmcvYmVsbHMuYyBiL3NvdW5kL3NvYy9zYW1zdW5nL2JlbGxzLmNcbmluZGV4IGZjNDk2M2QzYjk5YmYuLjNhMDM1MjQ5OTJiZjcgMTAwNjQ0XG4tLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG4rKysgYi9zb3VuZC9zb2Mvc2Ftc3VuZy9iZWxscy5jXG5AQCAtNDcwLDYgKzQ3MCw5IEBAIHN0YXRpYyBpbnQgYmVsbHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKHBkZXYtXHUwMDNlaWQgXHUwMDNjIDAgfHwgcGRldi1cdTAwM2VpZCBcdTAwM2U9IEFSUkFZX1NJWkUoYmVsbHNfY2FyZHMpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGJlbGxzX2NhcmRzW3BkZXYtXHUwMDNlaWRdLmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIFxuIFx0cmV0ID0gZGV2bV9zbmRfc29jX3JlZ2lzdGVyX2NhcmQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJlbGxzX2NhcmRzW3BkZXYtXHUwMDNlaWRdKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjM4Ljc4MTE5Nzk1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTc4NTkzOTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgQXNzZXNzbWVudCBmb3IgU291bmQgRHJpdmVyIFByb2JlIEZ1bmN0aW9uIEJvdW5kcyBDaGVja3MqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gYGRldnB0ci1cdTAwM2VpZGAgKG9yIGBwZGV2LVx1MDAzZWlkYCAtIGl0J3MgdGhlIHNhbWUgdGhpbmcgaGVyZSwgcmlnaHQ/KSB3aXRoaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBjaGVja3MgYXJlICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBkcml2ZXIgYmluZGluZyDigJMgdGhhdCdzIGEga2V5IGRldGFpbCB0byBrZWVwIGluIG1pbmQuXG5cbldlJ3JlIGxvb2tpbmcgYXQgZHJpdmVycyBsaWtlIGBhbG9vcC5jYCwgYGR1bW15LmNgLCBhbmQgYHZpcm1pZGkuY2AsIGFsbCBvZiB3aGljaCBhcmUgdmlydHVhbCBzb3VuZCBkcml2ZXJzIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBsb2FkZWQgYW5kIHByb2JlZC4gU28sIHllYWgsIHRoaXMgc2VlbXMgcG90ZW50aWFsbHkgZnV6emFibGUuIEJ1dCB3YWl0LCBsZXQncyBzdGVwIGJhY2sgYW5kIGJlIHByZWNpc2UuIFRoZSBjaGVjayBpcyBzcGVjaWZpY2FsbHkgb24gYGRldnB0ci1cdTAwM2VpZGAsIHdoaWNoLCBpbiB0aGlzIGNvbnRleHQsIGlzIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQuXG5cblRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gY29udHJvbCBvciBpbmZsdWVuY2UgdGhpcyBJRC4gQ2FuIHdlIGZ1enogcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgY3JlYXRpbmcgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHM/IFRoZSBwYXRjaCBzYXlzIHRoZXNlIGFyZSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIHdoZW4gYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgYm91bmQgdG8gdGhlIGRyaXZlci4gU3l6a2FsbGVyLCB3aXRoIGl0cyBgc3l6X2Rldl9jcmVhdGVgIG9yIHN5c2ZzIG1hbmlwdWxhdGlvbiBvciBtb2R1bGUgcGFyYW1ldGVycywgY291bGQgcG90ZW50aWFsbHkgYWNoaWV2ZSB0aGlzLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSAnd29ydGggZnV6emluZycgY3JpdGVyaWEuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgb3IgZm9yIGAucmVtb3ZlYCBvciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLiBUaGlzIGlzICpwcm9iZSogY29kZSwgbm90IHJlbW92ZSBjb2RlLiBQcm9iZSBmdW5jdGlvbnMgYXJlIHRyaWdnZXJlZCBieSB0aGUgZHJpdmVyIGJpbmQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYSBwcm9iZSBmdW5jdGlvbiB0aGF0IGNvdWxkIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBxdWVzdGlvbiBpcywgaWYgaXQncyByZWFjaGFibGUgYW5kIHdlJ3JlIHByZXZlbnRpbmcgYW4gT09CLCBpcyB0aGlzIGEgZ29vZCBjYW5kaWRhdGU/IFllcywgaXQgaXMgd29ydGggZnV6emluZy5cblxuVG8gYmUgZXh0cmEgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gY29uZmlybSB0aGF0IHRoZXNlIGRyaXZlcnMgY2FuIGJlIGVhc2lseSBlbmFibGVkIGFuZCBsb2FkZWQuIExldCdzIHNlZS4uLiBgYWxvb3AuY2AgaXMgYFNORF9BTE9PUGAsIGBkdW1teS5jYCBpcyBgU05EX0RVTU1ZYCwgYHZpcm1pZGkuY2AgaXMgYFNORF9WSVJNSURJYCwgYG1wdTQwMS5jYCBpcyBgU05EX01QVTQwMWAsIGBtdHM2NC5jYCBpcyBgU05EX01UUzY0YCwgYHBvcnRtYW4yeDQuY2AgaXMgYFNORF9QT1JUTUFOMlg0YCwgYHNlcmlhbC11MTY1NTAuY2AgaXMgYFNORF9TRVJJQUxfVTE2NTUwYCwgYW5kIGBiZWxscy5jYCBpcyBgU05EX1NPQ19CRUxMU2AuIEl0IGxvb2tzIGxpa2UgdGhlc2Ugc2hvdWxkIGJlIHJlYWRpbHkgYXZhaWxhYmxlIHZpYSBzb21lIHF1aWNrIGNvbmZpZ3VyYXRpb24uIEknbGwgdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZW0uIERlZmluaXRlbHkgd29ydGggbG9va2luZyBhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjQ5Ljc1OTc5Mzk1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjAzMDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FMT09QXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9Nzk9Y29uZmlnIFNORF9EVU1NWVxcbi0tXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTkxLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo5Mjpjb25maWcgU05EX0FMT09QXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTkzLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGxvb3BiYWNrIGRyaXZlciAoUENNKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NDkuODU1ODMxMDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NDA2MDI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqQXNzZXNzbWVudCBvZiBBdWRpbyBEZXZpY2UgU3VwcG9ydCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY3VycmVudCBzdGF0dXMgb2Ygc3VwcG9ydCBmb3IgYSBmZXcgc3BlY2lmaWMgYXVkaW8gZGV2aWNlcyBpbiB0aGUgc3lzdGVtLiBJJ20gZ29pbmcgdG8gcnVuIHRocm91Z2ggdGhlc2UgaW4gbXkgaGVhZCDigJMgbGV0J3Mgc2VlLCBmaXJzdCBgU05EX0RVTU1ZYC4gVGhhdCdzIHRoZSBiYXNpYyBzb3VuZCBkdW1teSBtb2R1bGUsIG5vdCB1c3VhbGx5IHNvbWV0aGluZyBJJ20gYWN0aXZlbHkgY29uY2VybmVkIHdpdGgsIGJ1dCBpdCdzIGdvb2QgdG8ga2VlcCBpdCBpbiBtaW5kLlxuXG5UaGVuLCB0aGVyZSdzIGBTTkRfVklSTUlESWAuIFZpcnR1YWwgTUlESSBpcyBzb21ldGhpbmcgSSBmcmVxdWVudGx5IGhhdmUgdG8gYWNjb3VudCBmb3I7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBpbXBsZW1lbnRlZC4gTmV4dCB1cCwgYFNORF9NUFU0MDFgLiBUaGUgb2xkIE1QVS00MDEgTUlESSBpbnRlcmZhY2Ug4oCTIHN0aWxsIHNlZWluZyB1c2FnZSBpbiBjZXJ0YWluIGVudmlyb25tZW50cy4gSSBoYXZlIHRvIGNoZWNrIGhvdyB0aGUgZHJpdmVycyBhcmUgaG9sZGluZyB1cCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcywgYnV0IEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBmYWlybHkgc3RhYmxlIGF0IHRoaXMgcG9pbnQuXG5cbkZvbGxvd2luZyB0aGF0LCBgU05EX01UUzY0YCwgd2hpY2ggcHJvYmFibHkgbmVlZHMgY2xvc2VyIGluc3BlY3Rpb24uIEkgY2FuIHByZWRpY3QgdGhpcyBvbmUgbWlnaHQgYnJpbmcgdXAgc29tZSBvYnNjdXJlIGlzc3Vlcy4gTm93LCBgU05EX1BPUlRNQU4yWDRgLiBJIG5lZWQgdG8gZW5zdXJlIGEgcG9ydCBtYW5hZ2VyIHNldHVwIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIExldCdzIHNlZSBhYm91dCB0aGUgc2VyaWFsIHBvcnQgaW1wbGVtZW50YXRpb24gbmV4dCB3aXRoIGBTTkRfU0VSSUFMX1UxNjU1MGAuIEkgdXN1YWxseSBleHBlY3QgdGhpcyBkcml2ZXIgdG8gYmUgc29saWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaW50ZXJydXB0cy5cblxuRmluYWxseSwgYFNORF9TT0NfQkVMTFNgLiBUaGlzIG9uZSBpcyBwcm9iYWJseSBhIFN5c3RlbSBPbiBDaGlwIChTT0MpIHNwZWNpZmljIGRyaXZlciwgc28gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHBsYXRmb3JtIGFuZCBhcmNoaXRlY3R1cmUgdG8gZGV0ZXJtaW5lIGlmIGFueSBzdXBwb3J0IGlzIG5lZWRlZCwgYnV0IEkgc2hvdWxkIGFkZCB0aGF0IHRvIHRoZSBsaXN0IG9mIHRoaW5ncyB0byBrZWVwIGFuIGV5ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxNSwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNDo1NC45MDk4OTQ0NDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzMDUzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9EVU1NWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnPTQ5PWNvbmZpZyBTTkRfUENTUFxcbi0tXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTc4LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzo3OTpjb25maWcgU05EX0RVTU1ZXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJEdW1teSAoL2Rldi9udWxsKSBzb3VuZGNhcmRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjU1LjAwNDIwMzU5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Njc3NDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1ZJUk1JRElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic291bmQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZz0xMTI9Y29uZmlnIFNORF9QQ01URVNUXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMTI4LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxMjk6Y29uZmlnIFNORF9WSVJNSURJXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBNSURJIHNvdW5kY2FyZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NTUuMTAwOTgzMzg1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTI1NzE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX01QVTQwMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuc291bmQvZHJpdmVycy9LY29uZmlnOjI6Y29uZmlnIFNORF9NUFU0MDFfVUFSVFxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWc9MTg3PWNvbmZpZyBTTkRfU0VSSUFMX0dFTkVSSUNcXG4tLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMDQtXFxuc291bmQvZHJpdmVycy9LY29uZmlnOjIwNTpjb25maWcgU05EX01QVTQwMVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0yMDYtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTVBVLTQwMSBVQVJUIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzQ6NTUuMjMyMjQ2NDcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDE0Mjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX1NPQ19CRUxMU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL3NhbXN1bmcvS2NvbmZpZz01OD1jb25maWcgU05EX1NPQ19UT0JFUk1PUllcXG4tLVxcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjQtXFxuc291bmQvc29jL3NhbXN1bmcvS2NvbmZpZzo2NTpjb25maWcgU05EX1NPQ19CRUxMU1xcbnNvdW5kL3NvYy9zYW1zdW5nL0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcIkF1ZGlvIHN1cHBvcnQgZm9yIFdvbGZzb24gQmVsbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM0OjU1LjMzMjM5NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODkwMzcwMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZXNlIGF1ZGlvIGRldmljZSBpZGVudGlmaWVycy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZW06IGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlc2UgYXMgbGlrZWx5IGJlaW5nIGRldmljZSBkcml2ZXIgbmFtZXMgd2l0aGluIGEgTGludXggc291bmQgc3lzdGVtLCBwcm9iYWJseSBBTFNBLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCBgU05EX01UUzY0YCBzdWdnZXN0cyBzb21lIGtpbmQgb2YgTUlESSBUaW1lIFN0YW1wIGludGVyZmFjZSwgcG9zc2libHkgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGRldmljZSB3aXRoIDY0IGNoYW5uZWxzIG9yIGZlYXR1cmVzIGNvbm5lY3RlZCB0byBhIE11c2ljYWwgVGltZSBTeW5jIHNvdXJjZSwgd2hpbGUgYFNORF9QT1JUTUFOMlg0YCBpcyBhIGJpdCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCwgaW5kaWNhdGluZyBhIHBvcnQgbWFuYWdlciB3aXRoIHR3byBpbnB1dHMgYW5kIGZvdXIgb3V0cHV0cyAtIGFsbW9zdCBjZXJ0YWlubHkgYSBNSURJIGludGVyZmFjZSBsaWtlIGEgVVNCIGRldmljZS4gVGhlIGxhc3Qgb25lLCBgU05EX1NFUklBTF9VMTY1NTBgLCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZS4gVGhlIGBVMTY1NTBgIHN0cm9uZ2x5IGhpbnRzIGF0IGEgbGVnYWN5IHNlcmlhbCBwb3J0IGNvbnRyb2xsZXIsIGFuZCBzbyB0aGlzIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUgdG8gdW5wYWNrIGZpcnN0IHNpbmNlIGEgZGV2aWNlIGRyaXZlciB3b3VsZCBiZSB1c2VkIGluIHRoaXMgY29udGV4dCBpZiBzZXJpYWwgcG9ydHMgYXJlIGJlaW5nIHVzZWQgYXMgYSBzb3VyY2UgZm9yIE1JREkuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIEkgbmVlZCB0byBjb25zaWRlciB3aHkgdGhlc2UgYXJlIGJlaW5nIGlkZW50aWZpZWQgYXMgYXVkaW8gZGV2aWNlcyBhdCBhbGwgYW5kIG5vdCBqdXN0IHJhdyBzZXJpYWwgcG9ydHMgYW5kIHBvcnQgbWFuYWdlcnMuIEknbSBnb2luZyB0byBoYXZlIHRvIGNvbnNpZGVyIHdoYXQgaXMgbmVlZGVkIGZvciB0aGlzIGluIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjb25maWd1cmF0aW9uIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTc1LCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuMjM2MTAxNzkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODY0MjE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX01UUzY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9MTQ2PWNvbmZpZyBTTkRfTVRQQVZcXG4tLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZy0xNTctXFxuc291bmQvZHJpdmVycy9LY29uZmlnOjE1ODpjb25maWcgU05EX01UUzY0XFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuMzM0NzUxMjMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NjU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9QT1JUTUFOMlg0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNvdW5kL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWc9MjA1PWNvbmZpZyBTTkRfTVBVNDAxXFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMjE1LVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoyMTY6Y29uZmlnIFNORF9QT1JUTUFOMlg0XFxuc291bmQvZHJpdmVycy9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiUG9ydG1hbiAyeDQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTowNC40Mzg0MjMzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTk4MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzb3VuZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnPTE1OD1jb25maWcgU05EX01UUzY0XFxuLS1cXG5zb3VuZC9kcml2ZXJzL0tjb25maWctMTcwLVxcbnNvdW5kL2RyaXZlcnMvS2NvbmZpZzoxNzE6Y29uZmlnIFNORF9TRVJJQUxfVTE2NTUwXFxuc291bmQvZHJpdmVycy9LY29uZmlnLTE3Mi1cXHR0cmlzdGF0ZSBcXFwiVUFSVDE2NTUwIHNlcmlhbCBNSURJIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDQuNTYxMDMzMTA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDAzNDE4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEF1ZGlvIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC4gSSdtIGxvb2tpbmcgYXQgdGhpcyBsaXN0IG9mIGF1ZGlvIGNvbmZpZ3VyYXRpb25zOiBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGBTTkRfVklSTUlESWAsIGBTTkRfTVBVNDAxYCwgYFNORF9NVFM2NGAsIGBTTkRfUE9SVE1BTjJYNGAsIGBTTkRfU0VSSUFMX1UxNjU1MGAsIGFuZCBgU05EX1NPQ19CRUxMU2AuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgYFNORF9TT0NfQkVMTFNgIHJpbmdzIGEgYmVsbCwgcHVuIGludGVuZGVkISBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgb25lIG9mdGVuIHJlbGllcyBvbiBzb21lIHVuZGVybHlpbmcgTXVsdGktRnVuY3Rpb24gRGV2aWNlIChNRkQpIG9yIEkyQyBidXMgZGVwZW5kZW5jaWVzLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseS4gTmVlZCB0byBhdm9pZCBhbnkgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIGVzcGVjaWFsbHkgd2l0aCB0aGF0IFNvdW5kIE9wZW4gRmlybXdhcmUgKFNPRikgc3R1ZmYgd2UndmUgYmVlbiB3b3JraW5nIHdpdGguIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCB0aGlzIHNvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjA4LjcwMTM3ODA1MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdGRlcGVuZHMgb24gSU5QVVQgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfV0xGX0NSQUdHXzY0MTAgfHwgQ09NUElMRV9URVNUXFxuICA2MjpcXHRcXHRzZWxlY3QgU05EX1NBTVNVTkdfSTJTXFxuICA2MzpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTg5NjJcXG4gIDY0OlxcdFxcbiAgNjU6XFx0Y29uZmlnIFNORF9TT0NfQkVMTFNcXG4gIDY2OlxcdFxcdHRyaXN0YXRlIFxcXCJBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXFxcIlxcbiAgNjc6XFx0XFx0ZGVwZW5kcyBvbiBNRkRfQVJJWk9OQSBcXHUwMDI2XFx1MDAyNiBNRkRfV001MTAyIFxcdTAwMjZcXHUwMDI2IE1GRF9XTTUxMTAgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG4gIDY5OlxcdFxcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcXG4gIDcwOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxcbiAgNzE6XFx0XFx0c2VsZWN0IFNORF9TT0NfV001MTEwXFxuICA3MjpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTkwODFcXG4gIDczOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxcbiAgNzQ6XFx0XFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgU05EX1NPQ19MT1dMQU5EXFxuICA3NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MDguNzAxNDY1OTkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NjU2MzM0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXVkaW8gRHJpdmVyIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBTTkRfU09DX0JFTExTYCBhdWRpbyBkcml2ZXIuIFNlZW1zIGxpa2UgaXQgaGFzIGEgcHJldHR5IHNwZWNpZmljIGRlcGVuZGVuY3kgY2hhaW46IGBNRkRfQVJJWk9OQSBcdTAwMjZcdTAwMjYgTUZEX1dNNTEwMiBcdTAwMjZcdTAwMjYgTUZEX1dNNTExMCBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSYC4gSXQncyBsaWtlbHkgYWxyaWdodCB0byBpbmNsdWRlIGl0LCBidXQgdGhlIHByaW1hcnkgYXVkaW8gZHJpdmVycyBJJ2QgbGVhbiB0b3dhcmRzIHJpZ2h0IG5vdyBhcmUgYFNORF9EVU1NWWAsIGBTTkRfQUxPT1BgLCBhbmQgYFNORF9WSVJNSURJYC4gQWx3YXlzIGdvb2QgdG8gY2hlY2sgZm9yIGFueSBoaWRkZW4gcXVpcmtzLiBMZXQgbWUgZGlnIGludG8gYFNORF9EVU1NWWAgYW5kIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IGhhdmUgYW55IHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIG9yIGVkZ2UgY2FzZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToxNC41NjcxMDIwMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IG9ubHkgd2FudCB5b3VyIHBjLXNwZWFrZXIgdG8gYmVlcC5cXG4gIDcyOlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyBkcml2ZXIgaWYgeW91IGhhdmUgYSB0YWJsZXQgcGllem8gYmVlcGVyXFxuICA3MzpcXHRcXHQgIGluIHlvdXIgUEMgaW5zdGVhZCBvZiB0aGUgcmVhbCBzcGVha2VyLlxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQgIFNheSBOIGlmIHlvdSBoYXZlIGEgc291bmQgY2FyZC5cXG4gIDc2OlxcdFxcdCAgU2F5IE0gaWYgeW91IGRvbid0LlxcbiAgNzc6XFx0XFx0ICBTYXkgWSBvbmx5IGlmIHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSBkby5cXG4gIDc4OlxcdFxcbiAgNzk6XFx0Y29uZmlnIFNORF9EVU1NWVxcbiAgODA6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15ICgvZGV2L251bGwpIHNvdW5kY2FyZFxcXCJcXG4gIDgxOlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSB0aGUgZHVtbXkgZHJpdmVyLiAgVGhpcyBkcml2ZXIgZG9lc1xcbiAgODQ6XFx0XFx0ICBub3RoaW5nLCBidXQgZW11bGF0ZXMgdmFyaW91cyBtaXhlciBjb250cm9scyBhbmQgUENNIGRldmljZXMuXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgWW91IGRvbid0IG5lZWQgdGhpcyB1bmxlc3MgeW91J3JlIHRlc3RpbmcgdGhlIGhhcmR3YXJlIHN1cHBvcnRcXG4gIDg3OlxcdFxcdCAgb2YgcHJvZ3JhbXMgdXNpbmcgdGhlIEFMU0EgQVBJLlxcbiAgODg6XFx0XFxuICA4OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDkwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWR1bW15LlxcbiAgOTE6XFx0XFxuICA5MjpcXHRjb25maWcgU05EX0FMT09QXFxuICA5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBsb29wYmFjayBkcml2ZXIgKFBDTSlcXFwiXFxuICA5NDpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAgOTU6XFx0XFx0c2VsZWN0IFNORF9USU1FUlxcbiAgOTY6XFx0XFx0aGVscFxcbiAgOTc6XFx0XFx0ICBTYXkgJ1knIG9yICdNJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBQQ00gbG9vcGJhY2sgZGV2aWNlLlxcbiAgOTg6XFx0XFx0ICBUaGlzIG1vZHVsZSByZXR1cm5zIHBsYXllZCBzYW1wbGVzIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UgdXNpbmdcXG4gIDk5OlxcdFxcdCAgdGhlIHN0YW5kYXJkIEFMU0EgUENNIGRldmljZS4gVGhlIGRldmljZXMgYXJlIHJvdXRlZCAwLVxcdTAwM2UxIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToxNC41NjczMTUxNTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3NTczMjY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU291bmQgRHJpdmVycyoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgU05EX0RVTU1ZYCwgYFNORF9BTE9PUGAsIGFuZCBgU05EX1ZJUk1JRElgIGFyZSBhbGwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgZ2VuZXJpYyBzb3VuZCBkcml2ZXJzIHRoYXQgZG9uJ3QgdGllIHRoZW1zZWx2ZXMgdG8gYW55IHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUuIFRoYXQncyBnb29kLCBrZWVwcyB0aGluZ3MgZmxleGlibGUuIEFuZCBgU05EX01QVTQwMWAgc2VlbXMgdG8gZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgYXMgd2VsbC4gVGhlbiB3ZSBoYXZlIGBTTkRfTVRTNjRgLiBUaGF0IG9uZSdzIGdvdCBhIGRlcGVuZGVuY3ksIHRob3VnaC4gSXQncyBjb25uZWN0ZWQgdG8gYFBBUlBPUlRgLiBBbHJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIgb24gdGhhdCBgUEFSUE9SVGAgZGVwZW5kZW5jeSBhbmQgZmlndXJlIG91dCB3aGF0IHRoYXQncyBhbGwgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjIxLjA0MzA1MTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0aGVscFxcbiAxNTE6XFx0XFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxcbiAxNTI6XFx0XFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuIDE1MzpcXHRcXHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24ndCB1c2VkIGZvciB0aGUgcG9ydC5cXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHBhdi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIFNORF9NVFM2NFxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkVTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcXFwiXFxuIDE2MDpcXHRcXHRkZXBlbmRzIG9uIFBBUlBPUlRcXG4gMTYxOlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNjI6XFx0XFx0aGVscFxcbiAxNjM6XFx0XFx0ICBUaGUgRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGlzIGEgNCBJbiA0IE91dCBNSURJIEludGVyZmFjZSB3aXRoIFxcbiAxNjQ6XFx0XFx0ICBhZGRpdGlvbmFsIFNNUFRFIFRpbWVjb2RlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHBhcmFsbGVsIHBvcnQuXFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdCAgU2F5ICdZJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoaXMgZGV2aWNlLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICdNJyBoZXJlOiB0aGUgbW9kdWxlIFxcbiAxNjk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXRzNjQuXFxuIDE3MDpcXHRcXG4gMTcxOlxcdGNvbmZpZyBTTkRfU0VSSUFMX1UxNjU1MFxcbiAxNzI6XFx0XFx0dHJpc3RhdGUgXFxcIlVBUlQxNjU1MCBzZXJpYWwgTUlESSBkcml2ZXJcXFwiXFxuIDE3MzpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcXG4gMTc0OlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBUbyBpbmNsdWRlIHN1cHBvcnQgZm9yIE1JREkgc2VyaWFsIHBvcnQgaW50ZXJmYWNlcywgc2F5IFkgaGVyZVxcbiAxNzc6XFx0XFx0ICBhbmQgcmVhZCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL3NvdW5kL2NhcmRzL3NlcmlhbC11MTY1NTAucnN0XFx1MDAzZS5cXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBzZXJpYWwgVUFSVHMgMTY1NTAgYW5kIGJldHRlci5cXG4gMTc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToyMS4wNDMxMzk4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM0NzgwMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgT3V0LW9mLUJvdW5kcyBWdWxuZXJhYmlsaXRpZXMgaW4gU291bmQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBgU05EX01UUzY0YCBhbmQgYFNORF9QT1JUTUFOMlg0YCBib3RoIHJlbHkgb24gYFBBUlBPUlRgLCBhbmQgYFNORF9TRVJJQUxfVTE2NTUwYCBuZWVkcyBgSEFTX0lPUE9SVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHRoZXNlIHNwZWNpZmljIHNvdW5kIGRyaXZlcnMuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGRldnB0ci1cdTAwM2VpZGAgKG9yIGBwZGV2LVx1MDAzZWlkYCkgaXMgc29tZXRpbWVzIGV4Y2VlZGluZyB0aGUgYm91bmRzIG9mIHRoZSBgU05EUlZfQ0FSRFNgIGFycmF5LCB3aGljaCBpcyB0eXBpY2FsbHkgb2Ygc2l6ZSA4LlxuXG5UaGUgcmVhbCBraWNrZXIgaXMgdGhhdCBpZiBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgb3IgZ2VuZXJhdGUgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIGl04oCZcyBnb2luZyB0byBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBleHBsb2l0YWJsZS4gVGhhdCdzIGEgcGVyZmVjdCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2UgcHJvYmUgZnVuY3Rpb25zIHNwZWNpZmljYWxseTogYGxvb3BiYWNrX3Byb2JlYCwgYHNuZF9kdW1teV9wcm9iZWAsIGBzbmRfbXB1NDAxX3Byb2JlYCwgYHNuZF9tdHM2NF9wcm9iZWAsIGBzbmRfcG9ydG1hbl9wcm9iZWAsIGBzbmRfc2VyaWFsX3Byb2JlYCwgYHNuZF92aXJtaWRpX3Byb2JlYCwgYW5kIGBiZWxsc19wcm9iZWAuIFRoYXQncyBhIHNvbGlkIGxpc3QgdG8gc3RhcnQgd2l0aC5cblxuSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9ucyB0byBmdWxseSBpbnZlc3RpZ2F0ZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX01QVTQwMWAsIGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBgU05EX1NFUklBTF9VMTY1NTBgLCBgU05EX1ZJUk1JRElgLCBhbmQgYFNORF9TT0NfQkVMTFNgLiBXYWl0LCBub3cgdGhhdCBJIGxvb2sgYXQgYFNORF9TT0NfQkVMTFNgLCBpdCBoYXMgYSBidW5jaCBvZiBkZXBlbmRlbmNpZXM6IGBNRkRfQVJJWk9OQSBcdTAwMjZcdTAwMjYgTUZEX1dNNTEwMiBcdTAwMjZcdTAwMjYgTUZEX1dNNTExMCBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSYC4gU3l6a2FsbGVyIG1pZ2h0IGJhbGsgYXQgdGhhdC4gSXQgbWlnaHQgYmUgc2ltcGxlciB0byBqdXN0IGluY2x1ZGUgYFNORF9TT0NfQkVMTFNgIGFuZCBob3BlIGl0IGZpZ3VyZXMgaXQgb3V0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgU05EX1ZJUk1JRElgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNToyOC4xNzc5MjI1MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvZHJpdmVycy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXG4gMTIxOlxcdFxcdCAgSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBvciBwYXR0ZXJuLWJhc2VkIGRhdGEgaW50byB0aGUgY2FwdHVyZSBzdHJlYW0sXFxuIDEyMjpcXHRcXHQgIGNoZWNrIHRoZSBwbGF5YmFjayBzdHJlYW0gZm9yIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIHBhdHRlcm4sIGluamVjdFxcbiAxMjM6XFx0XFx0ICB0aW1lIGRlbGF5cyBkdXJpbmcgY2FwdHVyZS9wbGF5YmFjaywgcmVkZWZpbmUgdGhlIFJFU0VUIGlvY3RsIG9wZXJhdGlvblxcbiAxMjQ6XFx0XFx0ICB0byBwZXJmb3JtIHRoZSBQQ00gbWlkZGxlIGxheWVyIHRlc3RpbmcgYW5kIGluamVjdCBlcnJvcnMgZHVyaW5nIHRoZVxcbiAxMjU6XFx0XFx0ICBQQ00gY2FsbGJhY2tzLiBJdCBzdXBwb3J0cyBib3RoIGludGVybGVhdmVkIGFuZCBub24taW50ZXJsZWF2ZWQgYWNjZXNzXFxuIDEyNjpcXHRcXHQgIG1vZGVzLiBZb3UgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZnRlc3QgaW4gdGhlICdhbHNhJ1xcbiAxMjc6XFx0XFx0ICBzZWxmdGVzdHMgZm9sZGVyLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRjb25maWcgU05EX1ZJUk1JRElcXG4gMTMwOlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIE1JREkgc291bmRjYXJkXFxcIlxcbiAxMzE6XFx0XFx0ZGVwZW5kcyBvbiBTTkRfU0VRVUVOQ0VSXFxuIDEzMjpcXHRcXHRzZWxlY3QgU05EX1RJTUVSXFxuIDEzMzpcXHRcXHRzZWxlY3QgU05EX1JBV01JRElcXG4gMTM0OlxcdFxcdHNlbGVjdCBTTkRfU0VRX1ZJUk1JRElcXG4gMTM1OlxcdFxcdHNlbGVjdCBTTkRfU0VRX01JRElfRVZFTlRcXG4gMTM2OlxcdFxcdGhlbHBcXG4gMTM3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHRoZSB2aXJ0dWFsIE1JREkgZHJpdmVyLiAgVGhpcyBkcml2ZXJcXG4gMTM4OlxcdFxcdCAgYWxsb3dzIHRvIGNvbm5lY3QgYXBwbGljYXRpb25zIHVzaW5nIHJhdyBNSURJIGRldmljZXMgdG9cXG4gMTM5OlxcdFxcdCAgc2VxdWVuY2VyIGNsaWVudHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjI4LjE3ODAyMzE5OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQwMjQyMjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVwZW5kZW5jeSBDaGVja2luZyBmb3IgU291bmQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBhbmQgaW1tZWRpYXRlbHkgYSBjb25uZWN0aW9uIGNsaWNrczogYFNORF9WSVJNSURJYCByZWxpZXMgb24gYFNORF9TRVFVRU5DRVJgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHZpcnR1YWwgTUlESSBuZWVkcyB0aGUgc2VxdWVuY2VyIGluZnJhc3RydWN0dXJlIHRvIGZ1bmN0aW9uLiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgcmVsYXRpb25zaGlwIGlzIHNvdW5kLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBTTkRfTVBVNDAxYCBuZXh0LCBhcyB0aGF0J3MgYSBrZXkgcGllY2UgaW4gdGhpcyBzb3VuZCBwdXp6bGUgYW5kIGxpa2VseSB0byBoYXZlIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjMzLjcxODI2ODk3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9kcml2ZXJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NlcmlhbC1taWRpLnlhbWxcXHUwMDNlXFxuIDIwMTpcXHRcXG4gMjAyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtc2VyaWFsLWdlbmVyaWMuXFxuIDIwNDpcXHRcXG4gMjA1OlxcdGNvbmZpZyBTTkRfTVBVNDAxXFxuIDIwNjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBNUFUtNDAxIFVBUlQgZHJpdmVyXFxcIlxcbiAyMDc6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9QT1JUXFxuIDIwODpcXHRcXHRzZWxlY3QgU05EX01QVTQwMV9VQVJUXFxuIDIwOTpcXHRcXHRoZWxwXFxuIDIxMDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNSURJIHBvcnRzIGNvbXBhdGlibGUgd2l0aFxcbiAyMTE6XFx0XFx0ICB0aGUgUm9sYW5kIE1QVS00MDEgaW50ZXJmYWNlIGluIFVBUlQgbW9kZS5cXG4gMjEyOlxcdFxcbiAyMTM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIxNDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tcHU0MDEuXFxuIDIxNTpcXHRcXG4gMjE2OlxcdGNvbmZpZyBTTkRfUE9SVE1BTjJYNFxcbiAyMTc6XFx0XFx0dHJpc3RhdGUgXFxcIlBvcnRtYW4gMng0IGRyaXZlclxcXCJcXG4gMjE4OlxcdFxcdGRlcGVuZHMgb24gUEFSUE9SVFxcbiAyMTk6XFx0XFx0c2VsZWN0IFNORF9SQVdNSURJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjMzLjcxODM0OTgwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDgwMjA4MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgZGVwZW5kZW5jaWVzLCBwaHJhc2VkIGFzIGlmIHRoZXkncmUgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzLlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuUmlnaHQsIGxldCdzIHNlZSwgbXkgbWVudGFsIG1hcCBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhlIHNvdW5kIG1vZHVsZSBgU05EX01QVTQwMWAgaXMgZGVmaW5pdGVseSB0aWVkIHRvIGBIQVNfSU9QT1JUYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBjbGFzc2ljIE1JREkgaW50ZXJmYWNlLCBuZWVkcyBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZW4gSSdtIHRoaW5raW5nIGFib3V0IGBTTkRfUE9SVE1BTjJYNGAsIGFuZCBpdCdzIGZsYWdnZWQgYXMgZGVwZW5kZW50IG9uIGBQQVJQT1JUYCAtIG1lYW5pbmcgcGFyYWxsZWwgcG9ydC4gVGhhdCdzIGEgYml0IGxlc3MgY29tbW9uIG5vd2FkYXlzLCBidXQgYWdhaW4sIGNvbXBsZXRlbHkgbG9naWNhbC4gSXQgd291bGRuJ3QgZnVuY3Rpb24gd2l0aG91dCB0aGUgcGFyYWxsZWwgcG9ydC4gT2theSwgSSd2ZSBnb3QgdGhvc2UgZGVwZW5kZW5jaWVzIG5haWxlZCBkb3duLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZyBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdC4gTm93IEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIGBTTkRfTVRTNjRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDEuMTk4NTYxNzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2RyaXZlcnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0aGVscFxcbiAxNTE6XFx0XFx0ICBUbyB1c2UgYSBNT1RVIE1pZGlUaW1lUGllY2UgQVYgbXVsdGlwb3J0IE1JREkgYWRhcHRlclxcbiAxNTI6XFx0XFx0ICBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIHNheSBZIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuIDE1MzpcXHRcXHQgIHRoZSBzdGFuZGFyZCBwYXJhbGxlbCBwb3J0IGRyaXZlciBpc24ndCB1c2VkIGZvciB0aGUgcG9ydC5cXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1tdHBhdi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIFNORF9NVFM2NFxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkVTSSBNaWRpdGVybWluYWwgNDE0MCBkcml2ZXJcXFwiXFxuIDE2MDpcXHRcXHRkZXBlbmRzIG9uIFBBUlBPUlRcXG4gMTYxOlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAxNjI6XFx0XFx0aGVscFxcbiAxNjM6XFx0XFx0ICBUaGUgRVNJIE1pZGl0ZXJtaW5hbCA0MTQwIGlzIGEgNCBJbiA0IE91dCBNSURJIEludGVyZmFjZSB3aXRoIFxcbiAxNjQ6XFx0XFx0ICBhZGRpdGlvbmFsIFNNUFRFIFRpbWVjb2RlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHBhcmFsbGVsIHBvcnQuXFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdCAgU2F5ICdZJyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoaXMgZGV2aWNlLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob3NlICdNJyBoZXJlOiB0aGUgbW9kdWxlIFxcbiAxNjk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbXRzNjQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjQxLjE5ODY1OTkxNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTI0MzMxOTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTXVzaW5ncyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHNvdW5kIGRldmljZSBjb25maWd1cmF0aW9ucyBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZS4gSXQncyBjbGVhciB0aGF0IGBTTkRfTVRTNjRgIHJlbGllcyBvbiBgUEFSUE9SVGAuIEFscmlnaHQsIHRoYXQncyBub3QgdW5leHBlY3RlZDsgdGhlc2UgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIG9mdGVuIGNyb3AgdXAuXG5cblNvLCBpbiBvcmRlciB0byBnZXQgYFNORF9NVFM2NGAgdG8gd29yayBjb3JyZWN0bHksIEknbGwgYWxzbyBuZWVkIHRvIGVuYWJsZTogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX1ZJUk1JRElgLCBgU05EX1NFUVVFTkNFUmAsIGBTTkRfTVBVNDAxYCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFBBUlBPUlRgIGFuZCBgU05EX1NPQ19CRUxMU2AuIFRoYXQgYWxsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIGF0IGxlYXN0IGluaXRpYWxseS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGBTTkRfU09DX0JFTExTYCBpcyBsaWtlbHkgdG8gaGF2ZSBhIGJ1bmNoIG9mIGl0cyBvd24gZGVwZW5kZW5jaWVzIEknbGwgbmVlZCB0byBzb3J0IG91dCwgb3IgYXQgbGVhc3QgYmUgYXdhcmUgb2YuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGluIGBzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnYC4gR29vZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIzOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjQ3LjEyMjk5NjQ4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2Mvc2Ftc3VuZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdGRlcGVuZHMgb24gSU5QVVQgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfV0xGX0NSQUdHXzY0MTAgfHwgQ09NUElMRV9URVNUXFxuICA2MjpcXHRcXHRzZWxlY3QgU05EX1NBTVNVTkdfSTJTXFxuICA2MzpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTg5NjJcXG4gIDY0OlxcdFxcbiAgNjU6XFx0Y29uZmlnIFNORF9TT0NfQkVMTFNcXG4gIDY2OlxcdFxcdHRyaXN0YXRlIFxcXCJBdWRpbyBzdXBwb3J0IGZvciBXb2xmc29uIEJlbGxzXFxcIlxcbiAgNjc6XFx0XFx0ZGVwZW5kcyBvbiBNRkRfQVJJWk9OQSBcXHUwMDI2XFx1MDAyNiBNRkRfV001MTAyIFxcdTAwMjZcXHUwMDI2IE1GRF9XTTUxMTAgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG4gIDY5OlxcdFxcdHNlbGVjdCBTTkRfU0FNU1VOR19JMlNcXG4gIDcwOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNNTEwMlxcbiAgNzE6XFx0XFx0c2VsZWN0IFNORF9TT0NfV001MTEwXFxuICA3MjpcXHRcXHRzZWxlY3QgU05EX1NPQ19XTTkwODFcXG4gIDczOlxcdFxcdHNlbGVjdCBTTkRfU09DX1dNMDAxMFxcbiAgNzQ6XFx0XFx0c2VsZWN0IFNORF9TT0NfV00xMjUwX0VWMVxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgU05EX1NPQ19MT1dMQU5EXFxuICA3NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVkaW8gc3VwcG9ydCBmb3IgV29sZnNvbiBMb3dsYW5kXFxcIlxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9XTEZfQ1JBR0dfNjQxMCB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDcuMTIzMDc5NDAxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDg5Mzg2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipEZXBlbmRlbmNpZXMgYW5kIEluY2x1c2lvbiBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyBgU05EX1NPQ19CRUxMU2AgbmVlZHMgc2V2ZXJhbCBvdGhlciBtb2R1bGVzIHRvIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHJlbGllcyBvbiBgTUZEX0FSSVpPTkFgLCBgTUZEX1dNNTEwMmAsIGBNRkRfV001MTEwYCwgdGhlIGBJMkNgIGludGVyZmFjZSwgYW5kIHRoZSBgU1BJX01BU1RFUmAgaW50ZXJmYWNlLiBIbW0sIGdpdmVuIHRoYXQgZGVwZW5kZW5jeSB0cmVlLCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYE1GRF9BUklaT05BYCwgYE1GRF9XTTUxMDJgLCBhbmQgYE1GRF9XTTUxMTBgLiBUaGV5J3JlIGludGVncmFsLCBhbmQgSSBjYW4ndCBzZWUgYSBjbGVhbiB3YXkgYXJvdW5kIHRoYXQuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgTUZEX0FSSVpPTkFgIG1vZHVsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgb25lLCBlc3BlY2lhbGx5IGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjUzLjAzMjAyNDAyN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxNDUxNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1GRF9BUklaT05BXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWZkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21mZC9LY29uZmlnPTIwNTQ9Y29uZmlnIE1GRF9WWDg1NVxcbi0tXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDYyLVxcbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2Mzpjb25maWcgTUZEX0FSSVpPTkFcXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNjQtXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDY4LVxcbmRyaXZlcnMvbWZkL0tjb25maWc6MjA2OTpjb25maWcgTUZEX0FSSVpPTkFfSTJDXFxuZHJpdmVycy9tZmQvS2NvbmZpZy0yMDcwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgTG9naWMvV29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzIEFyaXpvbmEgcGxhdGZvcm0gd2l0aCBJMkNcXFwiXFxuLS1cXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNzctXFxuZHJpdmVycy9tZmQvS2NvbmZpZzoyMDc4OmNvbmZpZyBNRkRfQVJJWk9OQV9TUElcXG5kcml2ZXJzL21mZC9LY29uZmlnLTIwNzktXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYy9Xb2xmc29uIE1pY3JvZWxlY3Ryb25pY3MgQXJpem9uYSBwbGF0Zm9ybSB3aXRoIFNQSVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTMuMDk5MTc1MDcxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODY4MDIxMzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IGFuZCBJbXBvcnRhbmNlIG9mIFNvdW5kIERyaXZlciBQcm9iZSBGdW5jdGlvbnMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBpZGVudGlmeSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFmdGVyIHRoaXMgcGF0Y2gsIHdoaWNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNrcyBvbiBwbGF0Zm9ybSBkZXZpY2UgSURzIHdpdGhpbiBzb3VuZCBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgaW5jbHVkZSBgU05EX1NPQ19CRUxMU2AgYW5kIGxldCB0aGUgZnV6emVyIHNvcnQgb3V0IGRlcGVuZGVuY2llcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VjY2Vzc2Z1bCBmdXp6aW5nLCBgU05EX0FMT09QYCwgYFNORF9EVU1NWWAsIGFuZCBgU05EX1ZJUk1JRElgIHNlZW0gbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBzaW5jZSB0aGV5J3JlIGxlc3MgaGFyZHdhcmUtZGVwZW5kZW50LlxuXG5JIGRlY2lkZWQgdG8gbGlzdCB0aGUgY29uZmlncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmaWxlcy4gVGhhdCBtZWFucyB0aGUgZm9sbG93aW5nIGNvbmZpZyBvcHRpb25zIG5lZWQgdG8gYmUgY29uc2lkZXJlZDogYFNORF9BTE9PUGAsIGBTTkRfRFVNTVlgLCBgU05EX01QVTQwMWAsIGBTTkRfTVRTNjRgLCBgU05EX1BPUlRNQU4yWDRgLCBgU05EX1NFUklBTF9VMTY1NTBgLCBgU05EX1ZJUk1JRElgLCBhbmQgYFNORF9TT0NfQkVMTFNgLlxuXG5UaGUgY29ycmVzcG9uZGluZyBwcm9iZSBmdW5jdGlvbnMgYXJlOiBgbG9vcGJhY2tfcHJvYmVgLCBgc25kX2R1bW15X3Byb2JlYCwgYHNuZF9tcHU0MDFfcHJvYmVgLCBgc25kX210czY0X3Byb2JlYCwgYHNuZF9wb3J0bWFuX3Byb2JlYCwgYHNuZF9zZXJpYWxfcHJvYmVgLCBgc25kX3Zpcm1pZGlfcHJvYmVgLCBhbmQgYGJlbGxzX3Byb2JlYC5cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGV5IGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIHdoaWNoIGluaXRpYWxseSByYWlzZWQgYSBmbGFnIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5IHBvaW50cy4gSG93ZXZlciwgdGhlc2UgYXJlICpwcm9iZSogZnVuY3Rpb25zLCBzbyB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuIHRvIGJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRoZSBwbGF0Zm9ybSBkcml2ZXIgc3RydWN0LCBtYWtpbmcgdGhlbSBub24taW5saW5lZCBhbmQgaGF2aW5nIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFRoaXMgaXMgcGVyZmVjdGx5IGFjY2VwdGFibGU7IGl0J3MgdGhlIGNvcnJlY3QgYXBwcm9hY2ggdG8gbGlzdCB0aGVtLiBJIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhlc2Ugc3RhdGljIHByb2Jlcy5cblxuTm93LCBsZXQncyByZWNhcCB0aGUgcmVhc29uaW5nOiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgZnVuY3Rpb25hbCBidWcsIHNwZWNpZmljYWxseSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIHByb2JlIGZ1bmN0aW9ucyB3aGVuIGRlYWxpbmcgd2l0aCBkeW5hbWljYWxseSBjcmVhdGVkIHBsYXRmb3JtIGRldmljZXMuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdmlydHVhbGx5LCBpdCdzIGRlZmluaXRlbHkgZnV6emFibGUsIGFuZCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQuXG5cbkZpbmFsbHksIEkgY2hlY2tlZCBmb3IgZGVwZW5kZW5jaWVzIGFuZCByZW1lbWJlcmVkIHRvIGFkZCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIGBTTkRfU0VRVUVOQ0VSYCBpcyByZXF1aXJlZCBmb3IgYFNORF9WSVJNSURJYCwgYW5kIGBQQVJQT1JUYCBpcyBuZWVkZWQgZm9yIGJvdGggYFNORF9NVFM2NGAgYW5kIGBTTkRfUE9SVE1BTjJYNGAuIEknbSBhbHNvIGF3YXJlIHRoYXQgYEhBU19JT1BPUlRgIGlzIG5lZWRlZCBmb3IgYFNORF9NUFU0MDFgIGFuZCBgU05EX1NFUklBTF9VMTY1NTBgLCB3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBvbiB4ODYsIHdoaWNoIGlzIGdvb2QuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IG9mIGNvbmZpZ3MgZm9yIGZ1enppbmcgaXM6IGBTTkRfQUxPT1BgLCBgU05EX0RVTU1ZYCwgYFNORF9NUFU0MDFgLCBgU05EX01UUzY0YCwgYFNORF9QT1JUTUFOMlg0YCwgYFNORF9TRVJJQUxfVTE2NTUwYCwgYFNORF9WSVJNSURJYCwgYFNORF9TT0NfQkVMTFNgLCBgU05EX1NFUVVFTkNFUmAsIGFuZCBgUEFSUE9SVGAuXG5cbk5vdywgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTc0LCJPdXRwdXRUb2tlbnMiOjI5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjowNS45NjcyMDAxMjRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwODM4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNORF9BTE9PUFwiLFxuICAgIFwiU05EX0RVTU1ZXCIsXG4gICAgXCJTTkRfTVBVNDAxXCIsXG4gICAgXCJTTkRfTVRTNjRcIixcbiAgICBcIlNORF9QT1JUTUFOMlg0XCIsXG4gICAgXCJTTkRfU0VSSUFMX1UxNjU1MFwiLFxuICAgIFwiU05EX1ZJUk1JRElcIixcbiAgICBcIlNORF9TT0NfQkVMTFNcIixcbiAgICBcIlNORF9TRVFVRU5DRVJcIixcbiAgICBcIlBBUlBPUlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29wYmFja19wcm9iZVwiLFxuICAgIFwic25kX2R1bW15X3Byb2JlXCIsXG4gICAgXCJzbmRfbXB1NDAxX3Byb2JlXCIsXG4gICAgXCJzbmRfbXRzNjRfcHJvYmVcIixcbiAgICBcInNuZF9wb3J0bWFuX3Byb2JlXCIsXG4gICAgXCJzbmRfc2VyaWFsX3Byb2JlXCIsXG4gICAgXCJzbmRfdmlybWlkaV9wcm9iZVwiLFxuICAgIFwiYmVsbHNfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIGRldmljZSBJRCBpbiB0aGUgcHJvYmUgZnVuY3Rpb25zIG9mIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhpcyBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhIHBsYXRmb3JtIGRldmljZSB3aXRoIGFuIGludmFsaWQgSUQuIFNpbmNlIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZHluYW1pY2FsbHkgKGUuZy4sIHZpYSBzeXNmcyBvciBzeXprYWxsZXIncyBkZXZpY2UgY3JlYXRpb24gcHNldWRvLXN5c2NhbGxzKSwgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNoYW5nZXMgZml4IGEgZnVuY3Rpb25hbCBidWcuIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTkRfQUxPT1BcIixcbiAgICBcIlNORF9EVU1NWVwiLFxuICAgIFwiU05EX01QVTQwMVwiLFxuICAgIFwiU05EX01UUzY0XCIsXG4gICAgXCJTTkRfUE9SVE1BTjJYNFwiLFxuICAgIFwiU05EX1NFUklBTF9VMTY1NTBcIixcbiAgICBcIlNORF9WSVJNSURJXCIsXG4gICAgXCJTTkRfU09DX0JFTExTXCIsXG4gICAgXCJTTkRfU0VRVUVOQ0VSXCIsXG4gICAgXCJQQVJQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibG9vcGJhY2tfcHJvYmVcIixcbiAgICBcInNuZF9kdW1teV9wcm9iZVwiLFxuICAgIFwic25kX21wdTQwMV9wcm9iZVwiLFxuICAgIFwic25kX210czY0X3Byb2JlXCIsXG4gICAgXCJzbmRfcG9ydG1hbl9wcm9iZVwiLFxuICAgIFwic25kX3NlcmlhbF9wcm9iZVwiLFxuICAgIFwic25kX3Zpcm1pZGlfcHJvYmVcIixcbiAgICBcImJlbGxzX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQgaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoaXMgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhbiBpbnZhbGlkIElELiBTaW5jZSBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIGR5bmFtaWNhbGx5IChlLmcuLCB2aWEgc3lzZnMgb3Igc3l6a2FsbGVyJ3MgZGV2aWNlIGNyZWF0aW9uIHBzZXVkby1zeXNjYWxscyksIHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIHRoZSBjaGFuZ2VzIGZpeCBhIGZ1bmN0aW9uYWwgYnVnLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[1] Phase: Succeeded StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 06:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 06:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2] Phase: Succeeded StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +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":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 06:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 06:36:17 +0000 UTC FinishedAt: 2026-08-07 06:36:22 +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":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfnpwx/series-workflowfnpwx-convert-artifact-440392422/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 06:36:27 +0000 UTC FinishedAt: 2026-08-07 06:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 06:36:27 +0000 UTC FinishedAt: 2026-08-07 06:57:55 +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:*bec440c6-d9ba-4f21-bbb4-7c8a97b046c6,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-workflowfnpwx/series-workflowfnpwx-convert-artifact-440392422/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": "930f08d7-e8cc-4f9f-8f86-08010907f0fc", "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-workflowfnpwx/series-workflowfnpwx-build-action-4064311932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:36:27 +0000 UTC FinishedAt: 2026-08-07 06:57:45 +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:*bec440c6-d9ba-4f21-bbb4-7c8a97b046c6,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-workflowfnpwx/series-workflowfnpwx-convert-artifact-440392422/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": "930f08d7-e8cc-4f9f-8f86-08010907f0fc", "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-workflowfnpwx/series-workflowfnpwx-build-action-4064311932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 06:57:55 +0000 UTC FinishedAt: 2026-08-07 06:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 06:57:55 +0000 UTC FinishedAt: 2026-08-07 06:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 06:57:55 +0000 UTC FinishedAt: 2026-08-07 06:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 06:57:55 +0000 UTC FinishedAt: 2026-08-07 06:57:59 +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":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfnpwx/series-workflowfnpwx-convert-artifact-2690124857/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 06:58:05 +0000 UTC FinishedAt: 2026-08-07 07:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 06:58:05 +0000 UTC FinishedAt: 2026-08-07 07:00:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*930f08d7-e8cc-4f9f-8f86-08010907f0fc,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-workflowfnpwx/series-workflowfnpwx-build-action-4064311932/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-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 07:00:11 +0000 UTC FinishedAt: 2026-08-07 07:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 07:00:11 +0000 UTC FinishedAt: 2026-08-07 07:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 07:00:11 +0000 UTC FinishedAt: 2026-08-07 07:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 07:00:11 +0000 UTC FinishedAt: 2026-08-07 07:20:16 +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:*bec440c6-d9ba-4f21-bbb4-7c8a97b046c6,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-workflowfnpwx/series-workflowfnpwx-convert-artifact-2690124857/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": "569f6988-fb6e-452e-ab27-7fd7565489fe", "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-workflowfnpwx/series-workflowfnpwx-build-action-1695802645/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 07:00:11 +0000 UTC FinishedAt: 2026-08-07 07:20:12 +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:*bec440c6-d9ba-4f21-bbb4-7c8a97b046c6,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-workflowfnpwx/series-workflowfnpwx-convert-artifact-2690124857/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": "569f6988-fb6e-452e-ab27-7fd7565489fe", "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-workflowfnpwx/series-workflowfnpwx-build-action-1695802645/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 07:20:16 +0000 UTC FinishedAt: 2026-08-07 07:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 07:20:16 +0000 UTC FinishedAt: 2026-08-07 07:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 07:20:16 +0000 UTC FinishedAt: 2026-08-07 07:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 07:20:16 +0000 UTC FinishedAt: 2026-08-07 07:22:22 +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:*569f6988-fb6e-452e-ab27-7fd7565489fe,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-workflowfnpwx/series-workflowfnpwx-build-action-1695802645/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-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +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":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"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:*930f08d7-e8cc-4f9f-8f86-08010907f0fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*569f6988-fb6e-452e-ab27-7fd7565489fe,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-workflowfnpwx/series-workflowfnpwx-build-action-4064311932/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-workflowfnpwx/series-workflowfnpwx-build-action-1695802645/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 07:22:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 07:22:36 +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":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"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-workflowfnpwx/series-workflowfnpwx-convert-artifact-1578604718/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 07:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 07:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 07:22:32 +0000 UTC FinishedAt: 2026-08-07 07:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 07:22:42 +0000 UTC FinishedAt: 2026-08-07 10:25:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnpwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["loopback_probe","snd_dummy_probe","snd_mpu401_probe","snd_mts64_probe","snd_portman_probe","snd_serial_probe","snd_virmidi_probe","bells_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["SND_ALOOP","SND_DUMMY","SND_MPU401","SND_MTS64","SND_PORTMAN2X4","SND_SERIAL_U16550","SND_VIRMIDI","SND_SOC_BELLS","SND_SEQUENCER","PARPORT"],"series_id":"08278640-61b4-4fd8-9f52-35ead03bc0ea","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 07:22:42 +0000 UTC FinishedAt: 2026-08-07 10:25:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*930f08d7-e8cc-4f9f-8f86-08010907f0fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*569f6988-fb6e-452e-ab27-7fd7565489fe,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-workflowfnpwx/series-workflowfnpwx-build-action-4064311932/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-workflowfnpwx/series-workflowfnpwx-build-action-1695802645/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-workflowfnpwx/series-workflowfnpwx-convert-artifact-1578604718/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,}