Name: series-workflowplkr7 Phase: Succeeded StartedAt: 2026-08-12 10:09:54 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[0] Phase: Succeeded StartedAt: 2026-08-12 10:09:54 +0000 UTC FinishedAt: 2026-08-12 10:12:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 10:09:54 +0000 UTC FinishedAt: 2026-08-12 10:12:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS" ], "series_id": "c8176a1e-a31a-4266-8d34-972b2683dbf4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "drm_client_modeset_wait_for_vblank", "drm_crtc_wait_one_vblank", "drm_crtc_wait_one_vblank_internal" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHZibGFuayB3YWl0aW5nIGxvZ2ljIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiwgcmVmZXJlbmNlIGNvdW50aW5nLCBvciB0aW1lb3V0cywgd2hpY2ggYXJlIG5vdCBpbiB0aGUgc2NvcGUgb2YgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NGE3ZDE1YmYyODFkMjA5MjVlNTcyMDViZGE2NzdlZTQ4NjI4MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxuIFx0ICovXG4gXHRyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpO1xuIFx0aWYgKCFyZXQpIHtcbi1cdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xuJiM0MztcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgJiM0MzsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4mIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbiBcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbmluZGV4IGY5MGZiMmQxM2U0MjMuLjljYWM3MDEzYjRjOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5AQCAtMTI5Nyw2ICYjNDM7MTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuJiM0MzsgKiBAY3J0YzogRFJNIGNydGNcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuJiM0MzsgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuJiM0MztcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1x0dTY0IGxhc3Q7XG4mIzQzO1xuJiM0MztcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4mIzQzO1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICYjNDM7MTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcJiMzNDt2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCByZXQ9JWlcXG5cJiMzNDssXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuJiM0MztcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwmIzM0O3ZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCYjMzQ7LCBwaXBlKTtcbiYjNDM7XHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwmIzM0OywgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEUk0gdmJsYW5rIHdhaXRpbmcgbG9naWMsIGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgRFJNIGFuZCBmYmRldiBpb2N0bHMgKGUuZy4sIGBGQklPUEFOX0RJU1BMQVlgLCBgRkJJT19XQUlURk9SVlNZTkNgKSBhbmQgYXJlIGV4ZWN1dGVkIGJ5IHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaQogCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7CiAJaWYgKCFyZXQpIHsKLQkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpOwomIzQzOwkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpOwogCQlkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwomIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIAogLyogZHJtX3ZibGFua193b3JrLmMgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7CiAKJiM0MzsvKioKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVmYWN0b3Jpbmcgc29tZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBkcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcm1fdmJsYW5rLmNgLiBUaGV5JiMzOTt2ZSBwdWxsZWQgb3V0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGZyb20gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYW5kIGFyZSB1c2luZyBpdCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBtb3RpdmF0aW9uIHNlZW1zIHRvIGJlIHRvIGF2b2lkIGEgcmVkdW5kYW50IGBkcm1fdmJsYW5rX2dldGAgY2FsbCBiZWNhdXNlIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhbHJlYWR5IG1hbmFnaW5nIHZibGFuayBhY3F1aXNpdGlvbi4gU21hcnQuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSosIGFuZCBpcyBpdCBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBUaGUgRFJNIHN1YnN5c3RlbSBhcyBhIHdob2xlIGlzIGFic29sdXRlbHkgZnV6emFibGU7IHZnZW0sIHZrbXMg4oCTIHRoZXJlIGFyZSBkZWZpbml0ZWx5IGtub3duIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGF0IHNwYWNlLiBOb3csIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCB3aGljaCwgZnJvbSB3aGF0IEkga25vdywgaXMgdXNlZCBpbiBEUk0gY2xpZW50IG1vZGVzZXQgZnVuY3Rpb25hbGl0eS4gQW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGlzIGV4cG9ydGVkIGFuZCB1c2VkIGJ5IGRyaXZlcnMsIHNvIHRoYXQgc291bmRzIHByb21pc2luZyB0b28uCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgdG8gYWN0dWFsbHkgYnVpbGQgYW5kIHRlc3QgdGhpcyBjb2RlLiBgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY2AgaXMsIG9idmlvdXNseSwgcGFydCBvZiB0aGUgc3RhbmRhcmQgRFJNIGJ1aWxkLiBBbmQgdGhlbiwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY2AgaXMgcGFydCBvZiBEUk1fQ0xJRU5ULCBzbyBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBwcmFjdGljYWwuIExldCYjMzk7cyBkbyBhIHF1aWNrIGdyZXAgc2VhcmNoIGZvciBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2Ygd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogYW5kIGhvdyBvZnRlbi4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEyOTctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMjk5LSAqIEBjbGllbnQ6IERSTSBjbGllbnRcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzA5OmludCBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1bnNpZ25lZCBpbnQgY3J0Y19pbmRleClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzEwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzOC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMzOTpFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYz0zMTU9c3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMzI2LVx0aWYgKGNydGNfaW5kZXggXHUwMDNlPSAwKVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzozMjc6XHRcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXHUwMDI2aGVscGVyLVx1MDAzZWNsaWVudCwgY3J0Y19pbmRleCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cdG11dGV4X3VubG9jayhcdTAwMjZoZWxwZXItXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYz05ODQ9aW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDA5LVx0XHQgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxMDpcdFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcdTAwMjZmYl9oZWxwZXItXHUwMDNlY2xpZW50LCAwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cdFx0YnJlYWs7XG4tLVxuaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oPTIxOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIGludCBtb2RlKTtcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaDoyMjA6aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KTtcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaC0yMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYC9kZXYvZmIwYCBWQkxBTksgV2FpdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIGZ1enppbmcgdGFyZ2V0LiBUaGUgZnVuY3Rpb24gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGNhbGxlZCB3aXRoaW4gYGRybV9mYl9oZWxwZXJfaW9jdGxgLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGlvY3RscyBvbiBgL2Rldi9mYjBgLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYEZCSU9QQU5fRElTUExBWWAgb3IgYEZCSU9fV0FJVEZPUlZTWU5DYCBjb21tYW5kcy4gVGhpcyBwYXRoIHRvIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBzZWVtcyBoaWdobHkgcmVhY2hhYmxlIGFuZCB0aHVzLCBwcmVzZW50cyBhIHNvbGlkIGF0dGFjayBzdXJmYWNlLiBEZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgdGltZSBvbiB0aGlzLgoKTm93LCBsZXQgbWUgZGlnIGEgYml0IGRlZXBlciBpbnRvIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gSSBzaG91bGQgaW52ZXN0aWdhdGUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHRvIHNlZSBob3cgdGhleSBmaXQgaW50byB0aGUgcGljdHVyZS4gVGhleSBtaWdodCBleHBvc2Ugc2ltaWxhciBmdW5jdGlvbmFsaXR5IG9yIG9mZmVyIGFkZGl0aW9uYWwgZW50cnkgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmM9MjI4Nz1zdGF0aWMgdm9pZCBkcm1fZHBfYXV4X2NyY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMC1cdHdoaWxlIChjcnRjLVx1MDAzZWNyYy5vcGVuZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYzoyMzAxOlx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMi1cdFx0aWYgKCFjcnRjLVx1MDAzZWNyYy5vcGVuZWQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEzMDk9aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzMwLVx0aWYgKCFyZXQpIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzMxOlx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMi1cdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg9MTE3PXU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoxMTg6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTExOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jPTEyOTg9RVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMDAtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMDE6ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMxMC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzI3OiAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMyOC0gKiBAY3J0YzogRFJNIGNydGNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzUtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMzY6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM0Ni1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM0OC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNTQtfVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzU1OkVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz02Nz12b2lkIGludGVsX2NydGNfd2FpdF9mb3JfbmV4dF92Ymxhbmsoc3RydWN0IGludGVsX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2OTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZjcnRjLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmMtNzAtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pbmdlbmljL2luZ2VuaWMtZHJtLWRydi5jPTIxMz1zdGF0aWMgaW50IGluZ2VuaWNfZHJtX3VwZGF0ZV9waXhjbGsoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXHRcdHByaXYtXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcbmRyaXZlcnMvZ3B1L2RybS9pbmdlbmljL2luZ2VuaWMtZHJtLWRydi5jOjIyMzpcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFx1MDAyNnByaXYtXHUwMDNlY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXHRcdHJldHVybiBOT1RJRllfT0s7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM9ODA1PXN0YXRpYyB2b2lkIG10a19jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXHQvKiBXYWl0IGZvciBwbGFuZXMgdG8gYmUgZGlzYWJsZWQgKi9cbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jOjgzNzpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jLTgzOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYy00NC1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYy00Ni19XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM9MTc3MT1zdGF0aWMgaW50IHRlZ3JhX2RjX3Nob3dfY3JjKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc4OTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZkYy1cdTAwM2ViYXNlKTtcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3OTA6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2ZGMtXHUwMDNlYmFzZSk7XG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxuLS1cbmluY2x1ZGUvZHJtL2RybV92YmxhbmsuaD0zMDQ9dm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmg6MzA1OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbmluY2x1ZGUvZHJtL2RybV92YmxhbmsuaC0zMDYtdm9pZCBkcm1fY3J0Y192Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEUk1CdWdmaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIHJlY3Vyc2lvbiBpc3N1ZSBpbiB0aGUgRFJNIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgdmJsYW5rIHdhaXRpbmcuIFRoZSBwcm9ibGVtIGlzIHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AsIHdoaWNoIHdhcyBjYWxsaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGF0IGZ1bmN0aW9uIGluIHR1cm4gd2FzIGNhbGxpbmcgYGRybV92YmxhbmtfZ2V0YCBhZ2FpbiwgbGVhZGluZyB0byBwb3RlbnRpYWwgZmFpbHVyZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjdXJzaW9uIHRyYXAsIGEgcmVhbCBoZWFkLXNjcmF0Y2hlci4KClRoZSBwcm9wb3NlZCBzb2x1dGlvbiBpbnZvbHZlcyBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBhbmQgdXNpbmcgdGhhdCB3aXRoaW4gKmJvdGgqIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgdGhlIG9yaWdpbmFsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBTbWFydC4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgdGhhdCByZS1lbnRyYW50IGNhbGwgdG8gYGRybV92YmxhbmtfZ2V0YC4gCgpTbywgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdHdvIGZ1bmN0aW9uczogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgcHJvYmxlbWF0aWMgYGRybV92YmxhbmtfZ2V0YCBjYWxsIGluIGJvdGggb3JpZ2luYWwgZnVuY3Rpb25zLgoKQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLCB3ZSBuZWVkIGBEUk1gIGVuYWJsZWQsIGFuZCBlaXRoZXIgYERSTV9DTElFTlRfU0VMRUNUSU9OYCBvciBgRFJNX0ZCREVWX0VNVUxBVElPTmAgKHdoaWNoIHB1bGxzIGluIGBkcm1fZmJfaGVscGVyLmNgKS4gTGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgZGV0YWlscyBmb3IgYERSTV9DTElFTlRfU0VMRUNUSU9OYC4gR290dGEgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIHNvbGlkIGFuZCB0aGF0IHRoaXMgZml4IGlzIG9ubHkgYXBwbGllZCB3aGVuIGFwcHJvcHJpYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0xJRU5UX1NFTEVDVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTM9Y29uZmlnIERSTV9DTElFTlRfTElCXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0xMS1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MTI6Y29uZmlnIERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTEzLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRFJNIEZCREVWIEVtdWxhdGlvbiAtIExldCYjMzk7cyBEaWcgSW4qKgoKQWxyaWdodCwgYmVmb3JlIEkgZ28gZG93biBhbnkgcmFiYml0IGhvbGVzIHdpdGggdGhpcyBkaXNwbGF5IGlzc3VlLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBob3cgdGhlIGtlcm5lbCBjb25maWcgaXMgc2V0IHVwIGZvciB0aGUgZnJhbWUgYnVmZmVyIGVtdWxhdGlvbiBzdXBwb3J0LiBMZXQmIzM5O3Mgc2VlIGhvdyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgZWFybHkgc3RlcDsgSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN5c3RlbSBpcyBldmVuICpjb25maWd1cmVkKiB0byBwb3RlbnRpYWxseSB1c2UgdGhlIG9sZGVyIGZyYW1lYnVmZmVyIGludGVyZmFjZSBvciBpZiB0aGF0JiMzOTtzIGRlZmluaXRpdmVseSBkaXNhYmxlZC4gVGhhdCBLY29uZmlnIGVudHJ5IGlzIHRoZSBsaW5jaHBpbiBoZXJlLiBJdCBkaWN0YXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgc3lzdGVtIGV2ZW4gaGFzIGEgcGF0aCB0byB0aGUgZnJhbWVidWZmZXIsIHdoaWNoIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoaXMuIFRpbWUgdG8gZ2V0IGludG8gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCBhbmQgdmVyaWZ5IGl0cyBzdGF0ZS4gS25vd2luZyB0aGUgY29uZmlnIGlzIGtleSBmb3IgYWxsIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXCYjMzQ7U3VwcG9ydGVkIERSTSBjbGllbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBhcyBJIHdvdWxkIG15c2VsZi4KCioqQ29uc2lkZXJpbmcgRFJNIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3aGVuIHNldHRpbmcgdXAgYSBkaXNwbGF5IG9yIGdyYXBoaWNzIGRyaXZlciwgYERSTWAgYW5kIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgZ2VuZXJhbGx5IGJlbmVmaWNpYWwgb3B0aW9ucyB0byBlbmFibGUuIFRoZXkmIzM5O3JlIHByZXR0eSBmb3VuZGF0aW9uYWwuIE5vdywgaWYgSSYjMzk7bSBsb29raW5nIGZvciBhIHZpcnR1YWwgRFJNIGRyaXZlciB0byBoZWxwIHdpdGggdGVzdGluZyBvciBpbiBhIGhlYWRsZXNzIGVudmlyb25tZW50LCB0aGF0JiMzOTtzIHdoZXJlIGBEUk1fVktNU2Agb3IgYERSTV9WR0VNYCBjb21lIGludG8gcGxheS4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25zaWRlciB0aGVzZS4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgYW5kIGN1cnJlbnQgcHJvamVjdCwgSSB0aGluayBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBEUk1fVktNU2AuIEkgY2FuIHByb2JhYmx5IGdldCB0aGUgaW5mbyBJIG5lZWQgZnJvbSB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9WS01TJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMi1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6Mzpjb25maWcgRFJNX1ZLTVNcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0xOC1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6MTk6Y29uZmlnIERSTV9WS01TX0tVTklUX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgVktNU1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYERSTV9WR0VNYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgRFJNX1ZHRU1gLiBHb3R0YSBjaGVjayB0aGF0IG91dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc3RhdGUuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/IExldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVsZXZhbnQgYW5kIGhvdyBpdCBjb3VsZCBpbmZsdWVuY2UgdGhlIHNpdHVhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9WR0VNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc6Mjpjb25maWcgRFJNX1ZHRU1cbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgR0VNIHByb3ZpZGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDUKCQkJCQkJCW91dHB1dDogMjAxCgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gVmJsYW5rIFdhaXRpbmcgTG9naWMgQ2hhbmdlcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgZGVlcCBpbiB0aGUgY29yZSBEUk0gc3Vic3lzdGVtIOKAkyBjaGFuZ2VzIHRvIGhvdyBpdCBoYW5kbGVzIFZCTEFOSyB3YWl0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uIGJlY2F1c2UgdGhvc2Uga2luZHMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGlvY3Rscy4gV2UmIzM5O3JlIHRhbGtpbmcgc3R1ZmYgbGlrZSBgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LYCwgb3IgZXZlbiB0aGUgb2xkZXIgZmJkZXYgaW9jdGxzLgoKTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBlbnRyeSBwb2ludHMgdG8gdGhpcyBuZXcgbG9naWMuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIHN0YXRpYyBvciBpZiBpdCYjMzk7cyBleHBvcnRlZC4gQWxyaWdodCwgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBhbmQgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGRybV9pbnRlcm5hbC5oYC4gU28gaXQmIzM5O3MgaW50ZXJuYWwgdG8gRFJNLCBidXQgKm5vdCogc3RhdGljLiBXZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGl0IGZvciBmb2N1cyBpbiB0aGUgZnV6emluZy4KCkxldCYjMzk7cyBwcmVwYXJlIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24uCgpXb3J0aEZ1enppbmc6IFllcywgZGVmaW5pdGVseS4gVGhlc2UgYXJlIGNvcmUgRFJNIGZ1bmN0aW9ucywgYW5kIFZCTEFOSyB3YWl0aW5nIGlzIGNyaXRpY2FsLgoKRm9jdXNTeW1ib2xzOgotIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYAotIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgCi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAKCkVuYWJsZUNvbmZpZ3M6Ci0gRFJNOiBPYnZpb3VzbHksIHdlIG5lZWQgdGhlIGNvcmUgRFJNIGRyaXZlciBlbmFibGVkLgotIERSTV9GQkRFVl9FTVVMQVRJT046IFdlIG5lZWQgdGhlIGZiZGV2IGVtdWxhdGlvbiwgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSBmYmRldiBpb2N0bHMuCi0gRFJNX1ZLTVM6IFRoZSBWS01TIHZpcnR1YWwgZHJpdmVyIGlzIGltcG9ydGFudC4gV2UgY2FuIHRlc3QgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgoKTXkgcmVhc29uaW5nIGlzIHRoaXM6IFRoaXMgcGF0Y2ggaXMgcmV3b3JraW5nIHRoZSBWQkxBTksgd2FpdGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgaXMgYWxsIHRvIHByZXZlbnQgdGhlIGRyZWFkZWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW5zaWRlIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gQmVjYXVzZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ugd2l0aCBEUk0gYW5kIGZiZGV2IGlvY3RscyBsaWtlIGBGQklPUEFOX0RJU1BMQVlgIGFuZCBgRkJJT19XQUlURk9SVlNZTkNgLCB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBWS01TIHdpbGwgYWxzbyBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzIGFuZCBzaG91bGQgYmUgaW5jbHVkZWQgZHVyaW5nIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7LAogICAgJiMzNDtEUk1fVktNUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERSTSB2Ymxhbmsgd2FpdGluZyBsb2dpYywgZXh0cmFjdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCBkb3VibGUgYGRybV92YmxhbmtfZ2V0YCBjYWxscyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBEUk0gYW5kIGZiZGV2IGlvY3RscyAoZS5nLiwgYEZCSU9QQU5fRElTUExBWWAsIGBGQklPX1dBSVRGT1JWU1lOQ2ApIGFuZCBhcmUgZXhlY3V0ZWQgYnkgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdmJsYW5rIHdhaXRpbmcgbG9naWMgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uLCByZWZlcmVuY2UgY291bnRpbmcsIG9yIHRpbWVvdXRzLCB3aGljaCBhcmUgbm90IGluIHRoZSBzY29wZSBvZiBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaQogCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7CiAJaWYgKCFyZXQpIHsKLQkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpOwomIzQzOwkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpOwogCQlkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwomIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIAogLyogZHJtX3ZibGFua193b3JrLmMgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7CiAKJiM0MzsvKioKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1MAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiA1MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogUmVmYWN0b3JpbmcgVmJsYW5rIFdhaXQgTG9naWMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvciwgbW9zdGx5IHRvdWNoaW5nIHRoZSB2Ymxhbmsgd2FpdGluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBEUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHNob3VsZCBiZSBLTVNBTi1zYWZlLCBidXQgbGV0JiMzOTtzIGJyZWFrIGl0IGRvd24gdG8gYmUgc3VyZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgcHVsbGluZyBvdXQgdGhlIGFjdHVhbCB3YWl0aW5nIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBMb29raW5nIGF0IHRoYXQgc25pcHBldCBvZiBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQ6IGl0IGdyYWJzIHRoZSBjdXJyZW50IHZibGFuayBjb3VudCwgdGhlbiB3YWl0cywgd2l0aCBhIHRpbWVvdXQsIGZvciB0aGF0IGNvdW50IHRvIGNoYW5nZS4gVGhlIGB3YWl0X2V2ZW50X3RpbWVvdXRgIGNhbGwgaXMgdGhlIGtleSBwaWVjZSB0aGVyZSwgYmxvY2tpbmcgdW50aWwgdGhlIHZibGFuayBjb3VudCBoYXMgaW5jcmVtZW50ZWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJlcy4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc3RhbmRhcmQga2VybmVsLXN0eWxlIGludGVycHJldGF0aW9uIG9mIHN1Y2Nlc3Mgb3IgdGltZW91dC4KClRoZSByYXRpb25hbGUgc2VlbXMgdG8gYmUgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgdmJsYW5rIG9iamVjdCB2aWEgYGRybV9jcnRjX3ZibGFua19nZXRgLiBDYWxsaW5nIHRoZSBleGlzdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB3b3VsZCByZXN1bHQgaW4gYW4gdW5uZWNlc3NhcnkgYWRkaXRpb25hbCBnZXQvcHV0LiBUaGlzIHJlZmFjdG9yaW5nLCBhbmQgdGhlIHVzZSBvZiB0aGUgbmV3IGludGVybmFsIGZ1bmN0aW9uLCBhdm9pZHMgdGhhdCByZWR1bmRhbnQgZ2V0L3B1dC4gU2VlbXMgc2Vuc2libGUuCgpTbywgdGhlIGNvcmUgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBhcmUgdGhlcmUgYW55IG5ldyBwb3RlbnRpYWwgc291cmNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoaXMgcGF0Y2ggc3RyaWN0bHkgcmVhcnJhbmdlcyAqZXhpc3RpbmcqIGxvZ2ljLiBJJiMzOTttIHNlZWluZyBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGludHJvZHVjZWQsIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgY29waWVzIHdoZXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbnRlbnRzLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgdGhlIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50LgoKVGhlIEtNU0FOIGltcGxpY2F0aW9ucyBhcmUgYmFzaWNhbGx5IHplcm8uIFRoaXMgaXMgZm9jdXNlZCBvbiBjb25jdXJyZW5jeSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLCB3aGljaCBhcmVuJiMzOTt0IGluIHRoZSBzY29wZSBvZiB3aGF0IEtNU0FOIGlzIGxvb2tpbmcgZm9yLiBUaGlzIHBhdGNoIGNhbiBiZSBjb25maWRlbnRseSBtYXJrZWQgYXMgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdmJsYW5rIHdhaXRpbmcgbG9naWMgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uLCByZWZlcmVuY2UgY291bnRpbmcsIG9yIHRpbWVvdXRzLCB3aGljaCBhcmUgbm90IGluIHRoZSBzY29wZSBvZiBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMToxMy4yMjgzMzY5NzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ1Nzg4MjYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6MTMuMjI4MzQzNzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU1NzkzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xcbkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxcbiBcXHQgKi9cXG4gXFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xcbitcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcdFxcdGRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXFxuQEAgLTExNSw2ICsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG4gXFxuIC8qIGRybV92Ymxhbmtfd29yay5jICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXFxuaW5kZXggZjkwZmIyZDEzZTQyMy4uOWNhYzcwMTNiNGM5YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbkBAIC0xMjk3LDYgKzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbiBcXG4rLyoqXFxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4rICogQGNydGM6IERSTSBjcnRjXFxuKyAqXFxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cXG4rICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LlxcbisgKlxcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxcbisgKi9cXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuK3tcXG4rXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4rXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4rXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuK1xcdGludCByZXQ7XFxuK1xcdHU2NCBsYXN0O1xcbitcXG4rXFx0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcXG4rXFxuK1xcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXFx1MDAzZXF1ZXVlLFxcbitcXHRcXHRcXHRcXHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXFxuK1xcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcXG4rXFxuK1xcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4gICogQGNydGM6IERSTSBjcnRjXFxuQEAgLTEzMTEsMjYgKzEzMzcsMjAgQEAgaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIHtcXG4gXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4gXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4tXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuIFxcdGludCByZXQ7XFxuLVxcdHU2NCBsYXN0O1xcbiBcXG4gXFx0cmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTtcXG4gXFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcXFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIHBpcGUsIHJldCkpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xcbi1cXG4tXFx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cXHUwMDNlcXVldWUsXFxuLVxcdFxcdFxcdFxcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcXG4tXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbitcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcbi1cXHRkcm1fV0FSTihkZXYsIHJldCA9PSAwLCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbitcXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbiBcXG4gXFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcXG4gXFxuLVxcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMToxNC40ODQ5Nzk3ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2Mjg1NjAwMzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERSTSB2Ymxhbmsgd2FpdGluZyBsb2dpYywgZXh0cmFjdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCBkb3VibGUgYGRybV92YmxhbmtfZ2V0YCBjYWxscyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBEUk0gYW5kIGZiZGV2IGlvY3RscyAoZS5nLiwgYEZCSU9QQU5fRElTUExBWWAsIGBGQklPX1dBSVRGT1JWU1lOQ2ApIGFuZCBhcmUgZXhlY3V0ZWQgYnkgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE2NGE3ZDE1YmYyODFkMjA5MjVlNTcyMDViZGE2NzdlZTQ4NjI4MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbitcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiArMTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuKy8qKlxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbisgKiBAY3J0YzogRFJNIGNydGNcbisgKlxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cbisgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4rICpcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxuKyAqL1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuK3tcbitcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbitcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4rXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbitcdGludCByZXQ7XG4rXHR1NjQgbGFzdDtcbitcbitcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4rXG4rXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuK1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1xuK1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK31cbitcbiAvKipcbiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG4gICogQGNydGM6IERSTSBjcnRjXG5AQCAtMTMxMSwyNiArMTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcInZibGFuayBub3QgYXZhaWxhYmxlIG9uIGNydGMgJWksIHJldD0laVxcblwiLFxuIFx0XHQgICAgIHBpcGUsIHJldCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xuLVxuLVx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcbi1cdFx0XHRcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcbi1cdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbitcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4rXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcInZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCIsIHBpcGUpO1xuIFxuIFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcbiBcbi1cdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjE0LjQ4NDk4MjkxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NjI1OTk0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRFJNIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVmYWN0b3Jpbmcgc29tZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBkcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcm1fdmJsYW5rLmNgLiBUaGV5J3ZlIHB1bGxlZCBvdXQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgZnJvbSBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYXJlIHVzaW5nIGl0IGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlIG1vdGl2YXRpb24gc2VlbXMgdG8gYmUgdG8gYXZvaWQgYSByZWR1bmRhbnQgYGRybV92YmxhbmtfZ2V0YCBjYWxsIGJlY2F1c2UgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFscmVhZHkgbWFuYWdpbmcgdmJsYW5rIGFjcXVpc2l0aW9uLiBTbWFydC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGNvZGUgcGF0aCBldmVuICpyZWFjaGFibGUqLCBhbmQgaXMgaXQgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZz8gVGhlIERSTSBzdWJzeXN0ZW0gYXMgYSB3aG9sZSBpcyBhYnNvbHV0ZWx5IGZ1enphYmxlOyB2Z2VtLCB2a21zIOKAkyB0aGVyZSBhcmUgZGVmaW5pdGVseSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gdGhhdCBzcGFjZS4gTm93LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCwgd2hpY2gsIGZyb20gd2hhdCBJIGtub3csIGlzIHVzZWQgaW4gRFJNIGNsaWVudCBtb2Rlc2V0IGZ1bmN0aW9uYWxpdHkuIEFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBkcml2ZXJzLCBzbyB0aGF0IHNvdW5kcyBwcm9taXNpbmcgdG9vLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyByZXF1aXJlZCB0byBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzIGNvZGUuIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jYCBpcywgb2J2aW91c2x5LCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBEUk0gYnVpbGQuIEFuZCB0aGVuLCBgZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jYCBpcyBwYXJ0IG9mIERSTV9DTElFTlQsIHNvIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGVuYWJsZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHByYWN0aWNhbC4gTGV0J3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNlbnNlIG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIGFuZCBob3cgb2Z0ZW4uIFRoYXQgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjIyLjA0NzU4NjgzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMTk2MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5OS0gKiBAY2xpZW50OiBEUk0gY2xpZW50XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMwOTppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzgtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyNi1cXHRpZiAoY3J0Y19pbmRleCBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MzI3OlxcdFxcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXFx1MDAyNmhlbHBlci1cXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhlbHBlci1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAwOS1cXHRcXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjEwMTA6XFx0XFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcXHUwMDI2ZmJfaGVscGVyLVxcdTAwM2VjbGllbnQsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cXHRcXHRicmVhaztcXG4tLVxcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaD0yMTk9aW50IGRybV9jbGllbnRfbW9kZXNldF9kcG1zKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCBpbnQgbW9kZSk7XFxuaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oOjIyMDppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpO1xcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaC0yMjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjIzLjc3ODc5MDA1OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzI5NjY0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGAvZGV2L2ZiMGAgVkJMQU5LIFdhaXQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYSBwcm9taXNpbmcgZnV6emluZyB0YXJnZXQuIFRoZSBmdW5jdGlvbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgaXMgY2FsbGVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggaW9jdGxzIG9uIGAvZGV2L2ZiMGAsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgRkJJT1BBTl9ESVNQTEFZYCBvciBgRkJJT19XQUlURk9SVlNZTkNgIGNvbW1hbmRzLiBUaGlzIHBhdGggdG8gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIHNlZW1zIGhpZ2hseSByZWFjaGFibGUgYW5kIHRodXMsIHByZXNlbnRzIGEgc29saWQgYXR0YWNrIHN1cmZhY2UuIERlZmluaXRlbHkgd29ydGggc3BlbmRpbmcgc29tZSB0aW1lIG9uIHRoaXMuXG5cbk5vdywgbGV0IG1lIGRpZyBhIGJpdCBkZWVwZXIgaW50byByZWxhdGVkIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIEkgc2hvdWxkIGludmVzdGlnYXRlIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB0byBzZWUgaG93IHRoZXkgZml0IGludG8gdGhlIHBpY3R1cmUuIFRoZXkgbWlnaHQgZXhwb3NlIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBvciBvZmZlciBhZGRpdGlvbmFsIGVudHJ5IHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTozMS41NTE3NTkwNzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxMjQzNjY2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jPTIyODc9c3RhdGljIHZvaWQgZHJtX2RwX2F1eF9jcmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMC1cXHR3aGlsZSAoY3J0Yy1cXHUwMDNlY3JjLm9wZW5lZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYzoyMzAxOlxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMi1cXHRcXHRpZiAoIWNydGMtXFx1MDAzZWNyYy5vcGVuZWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTMwOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMC1cXHRpZiAoIXJldCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzMxOlxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMi1cXHRcXHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oPTExNz11NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjExODppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTExOS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAwLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwMTogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI4LSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMzNjppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNTU6RVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jPTY3PXZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9uZXh0X3ZibGFuayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZjcnRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy03MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXFx0XFx0cHJpdi1cXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZwcml2LVxcdTAwM2VjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXFx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXFxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM6ODM3OlxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ2LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZkYy1cXHUwMDNlYmFzZSk7XFxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc5MDpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXFx1MDAyNmRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oPTMwND12b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmg6MzA1OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmgtMzA2LXZvaWQgZHJtX2NydGNfdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTozMy4zNjQyMDM1MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDEzNDU0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERSTUJ1Z2ZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IGEgcmVjdXJzaW9uIGlzc3VlIGluIHRoZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB2Ymxhbmsgd2FpdGluZy4gVGhlIHByb2JsZW0gaXMgd2l0aGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCwgd2hpY2ggd2FzIGNhbGxpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoYXQgZnVuY3Rpb24gaW4gdHVybiB3YXMgY2FsbGluZyBgZHJtX3ZibGFua19nZXRgIGFnYWluLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBmYWlsdXJlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaGF0J3MgYSBjbGFzc2ljIHJlY3Vyc2lvbiB0cmFwLCBhIHJlYWwgaGVhZC1zY3JhdGNoZXIuXG5cblRoZSBwcm9wb3NlZCBzb2x1dGlvbiBpbnZvbHZlcyBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBhbmQgdXNpbmcgdGhhdCB3aXRoaW4gKmJvdGgqIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgdGhlIG9yaWdpbmFsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBTbWFydC4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgdGhhdCByZS1lbnRyYW50IGNhbGwgdG8gYGRybV92YmxhbmtfZ2V0YC4gXG5cblNvLCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCBpcyB1c2VkIHRvIHByZXZlbnQgdGhlIHByb2JsZW1hdGljIGBkcm1fdmJsYW5rX2dldGAgY2FsbCBpbiBib3RoIG9yaWdpbmFsIGZ1bmN0aW9ucy5cblxuQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQncyBzZWUsIHdlIG5lZWQgYERSTWAgZW5hYmxlZCwgYW5kIGVpdGhlciBgRFJNX0NMSUVOVF9TRUxFQ1RJT05gIG9yIGBEUk1fRkJERVZfRU1VTEFUSU9OYCAod2hpY2ggcHVsbHMgaW4gYGRybV9mYl9oZWxwZXIuY2ApLiBMZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMgZm9yIGBEUk1fQ0xJRU5UX1NFTEVDVElPTmAuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzb2xpZCBhbmQgdGhhdCB0aGlzIGZpeCBpcyBvbmx5IGFwcGxpZWQgd2hlbiBhcHByb3ByaWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo0MS4zNzc2NjAxOTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NzM4NjEzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0NMSUVOVF9TRUxFQ1RJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0zPWNvbmZpZyBEUk1fQ0xJRU5UX0xJQlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnOjEyOmNvbmZpZyBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMTMtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6NDIuOTc1MDUzNjA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzM3MjM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRFJNIEZCREVWIEVtdWxhdGlvbiAtIExldCdzIERpZyBJbioqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGRvd24gYW55IHJhYmJpdCBob2xlcyB3aXRoIHRoaXMgZGlzcGxheSBpc3N1ZSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgaG93IHRoZSBrZXJuZWwgY29uZmlnIGlzIHNldCB1cCBmb3IgdGhlIGZyYW1lIGJ1ZmZlciBlbXVsYXRpb24gc3VwcG9ydC4gTGV0J3Mgc2VlIGhvdyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgZWFybHkgc3RlcDsgSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN5c3RlbSBpcyBldmVuICpjb25maWd1cmVkKiB0byBwb3RlbnRpYWxseSB1c2UgdGhlIG9sZGVyIGZyYW1lYnVmZmVyIGludGVyZmFjZSBvciBpZiB0aGF0J3MgZGVmaW5pdGl2ZWx5IGRpc2FibGVkLiBUaGF0IEtjb25maWcgZW50cnkgaXMgdGhlIGxpbmNocGluIGhlcmUuIEl0IGRpY3RhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBzeXN0ZW0gZXZlbiBoYXMgYSBwYXRoIHRvIHRoZSBmcmFtZWJ1ZmZlciwgd2hpY2ggd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhpcy4gVGltZSB0byBnZXQgaW50byBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgIGFuZCB2ZXJpZnkgaXRzIHN0YXRlLiBLbm93aW5nIHRoZSBjb25maWcgaXMga2V5IGZvciBhbGwgdGhlIHN1YnNlcXVlbnQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo0Ni42ODg0Mjg4NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzc0NTE2MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0yOD1tZW51IFxcXCJTdXBwb3J0ZWQgRFJNIGNsaWVudHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjQ4LjMyNTg5MDQ1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE5ODEyMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9ucywgdGhpbmtpbmcgdGhyb3VnaCB0aGVtIGFzIEkgd291bGQgbXlzZWxmLlxuXG4qKkNvbnNpZGVyaW5nIERSTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHdoZW4gc2V0dGluZyB1cCBhIGRpc3BsYXkgb3IgZ3JhcGhpY3MgZHJpdmVyLCBgRFJNYCBhbmQgYERSTV9GQkRFVl9FTVVMQVRJT05gIGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcyBnZW5lcmFsbHkgYmVuZWZpY2lhbCBvcHRpb25zIHRvIGVuYWJsZS4gVGhleSdyZSBwcmV0dHkgZm91bmRhdGlvbmFsLiBOb3csIGlmIEknbSBsb29raW5nIGZvciBhIHZpcnR1YWwgRFJNIGRyaXZlciB0byBoZWxwIHdpdGggdGVzdGluZyBvciBpbiBhIGhlYWRsZXNzIGVudmlyb25tZW50LCB0aGF0J3Mgd2hlcmUgYERSTV9WS01TYCBvciBgRFJNX1ZHRU1gIGNvbWUgaW50byBwbGF5LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnNpZGVyIHRoZXNlLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBhbmQgY3VycmVudCBwcm9qZWN0LCBJIHRoaW5rIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgRFJNX1ZLTVNgLiBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGluZm8gSSBuZWVkIGZyb20gdGhlcmUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3ODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo1MS40NDU3MDU0ODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjc0NTg5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WS01TXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMi1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjM6Y29uZmlnIERSTV9WS01TXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIEtNUyAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMTgtXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoxOTpjb25maWcgRFJNX1ZLTVNfS1VOSVRfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBWS01TXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjUzLjA3MzE3MDc2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg3MjI3ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYERSTV9WR0VNYC4gR290dGEgY2hlY2sgdGhhdCBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHN0YXRlLiBXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJyb2FkZXIgcGljdHVyZT8gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IExldCdzIGZpZ3VyZSBvdXQgd2hhdCdzIHJlbGV2YW50IGFuZCBob3cgaXQgY291bGQgaW5mbHVlbmNlIHRoZSBzaXR1YXRpb24uIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6NTguMjYwNDAxMDA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc4NjE4MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fVkdFTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZzoyOmNvbmZpZyBEUk1fVkdFTVxcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBHRU0gcHJvdmlkZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjU5LjgzOTAyNDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0MjIwMDQxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERSTSBWYmxhbmsgV2FpdGluZyBMb2dpYyBDaGFuZ2VzKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBkZWVwIGluIHRoZSBjb3JlIERSTSBzdWJzeXN0ZW0g4oCTIGNoYW5nZXMgdG8gaG93IGl0IGhhbmRsZXMgVkJMQU5LIHdhaXRpbmcuIFRoYXQgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24gYmVjYXVzZSB0aG9zZSBraW5kcyBvZiBjaGFuZ2VzIGFyZSBvZnRlbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggaW9jdGxzLiBXZSdyZSB0YWxraW5nIHN0dWZmIGxpa2UgYERSTV9JT0NUTF9XQUlUX1ZCTEFOS2AsIG9yIGV2ZW4gdGhlIG9sZGVyIGZiZGV2IGlvY3Rscy5cblxuTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBlbnRyeSBwb2ludHMgdG8gdGhpcyBuZXcgbG9naWMuXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBzb21ldGhpbmcuLi4gSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgaXMgc3RhdGljIG9yIGlmIGl0J3MgZXhwb3J0ZWQuIEFscmlnaHQsIGl0J3MgKm5vdCogc3RhdGljLCBhbmQgaXQncyBkZWNsYXJlZCBpbiBgZHJtX2ludGVybmFsLmhgLiBTbyBpdCdzIGludGVybmFsIHRvIERSTSwgYnV0ICpub3QqIHN0YXRpYy4gV2UgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSBpdCBmb3IgZm9jdXMgaW4gdGhlIGZ1enppbmcuXG5cbkxldCdzIHByZXBhcmUgdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi5cblxuV29ydGhGdXp6aW5nOiBZZXMsIGRlZmluaXRlbHkuIFRoZXNlIGFyZSBjb3JlIERSTSBmdW5jdGlvbnMsIGFuZCBWQkxBTksgd2FpdGluZyBpcyBjcml0aWNhbC5cblxuRm9jdXNTeW1ib2xzOlxuLSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Bcbi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2Bcbi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGBcblxuRW5hYmxlQ29uZmlnczpcbi0gRFJNOiBPYnZpb3VzbHksIHdlIG5lZWQgdGhlIGNvcmUgRFJNIGRyaXZlciBlbmFibGVkLlxuLSBEUk1fRkJERVZfRU1VTEFUSU9OOiBXZSBuZWVkIHRoZSBmYmRldiBlbXVsYXRpb24sIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gZmJkZXYgaW9jdGxzLlxuLSBEUk1fVktNUzogVGhlIFZLTVMgdmlydHVhbCBkcml2ZXIgaXMgaW1wb3J0YW50LiBXZSBjYW4gdGVzdCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiBUaGlzIHBhdGNoIGlzIHJld29ya2luZyB0aGUgVkJMQU5LIHdhaXRpbmcgbG9naWMsIHNwZWNpZmljYWxseSBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBUaGlzIGlzIGFsbCB0byBwcmV2ZW50IHRoZSBkcmVhZGVkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluc2lkZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGggRFJNIGFuZCBmYmRldiBpb2N0bHMgbGlrZSBgRkJJT1BBTl9ESVNQTEFZYCBhbmQgYEZCSU9fV0FJVEZPUlZTWU5DYCwgdmlydHVhbCBkcml2ZXJzIGxpa2UgVktNUyB3aWxsIGFsc28gYmUgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcyBhbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGR1cmluZyB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA1LCJPdXRwdXRUb2tlbnMiOjIwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMjoxNy4yNjEwMzE1NzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk0ODgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gICAgXCJEUk1fVktNU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEUk0gdmJsYW5rIHdhaXRpbmcgbG9naWMsIGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgRFJNIGFuZCBmYmRldiBpb2N0bHMgKGUuZy4sIGBGQklPUEFOX0RJU1BMQVlgLCBgRkJJT19XQUlURk9SVlNZTkNgKSBhbmQgYXJlIGV4ZWN1dGVkIGJ5IHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTI6MTcuMzQwOTg3MzA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0NTIyMDk3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjEyOjE3LjM0MTYxNTgyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM0NDU4OTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHZibGFuayB3YWl0aW5nIGxvZ2ljIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiwgcmVmZXJlbmNlIGNvdW50aW5nLCBvciB0aW1lb3V0cywgd2hpY2ggYXJlIG5vdCBpbiB0aGUgc2NvcGUgb2YgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxuIFx0ICovXG4gXHRyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpO1xuIFx0aWYgKCFyZXQpIHtcbi1cdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xuK1x0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG4gXHRcdGRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5pbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbiBcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbmluZGV4IGY5MGZiMmQxM2U0MjMuLjljYWM3MDEzYjRjOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5AQCAtMTI5Nyw2ICsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7XG4gXG4rLyoqXG4rICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuKyAqIEBjcnRjOiBEUk0gY3J0Y1xuKyAqXG4rICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuKyAqIEV2ZXJ5IGNhbGxlciBtdXN0IGhvbGQgYSB2YmxhbmsgcmVmZXJlbmNlIGFjcm9zcyB0aGUgY29tcGxldGUgd2FpdC5cbisgKlxuKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4rICovXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4re1xuK1x0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXHUwMDNlZGV2O1xuK1x0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcbitcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuK1x0aW50IHJldDtcbitcdHU2NCBsYXN0O1xuK1xuK1x0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcbitcbitcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4rXHRcdFx0XHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXG4rXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7XG4rfVxuK1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIHtcbiBcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiBcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4tXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbiBcdGludCByZXQ7XG4tXHR1NjQgbGFzdDtcbiBcbiBcdHJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7XG4gXHRpZiAoZHJtX1dBUk4oZGV2LCByZXQsIFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxuXCIsXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1x0cmV0ID0gZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFxuLVx0ZHJtX1dBUk4oZGV2LCByZXQgPT0gMCwgXCJ2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwiLCBwaXBlKTtcbitcdGRybV9XQVJOKGRldiwgcmV0ID09IC1FVElNRURPVVQsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTI6MTcuMzQxNjE3MDk2WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzQ0NTY3OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IFJlZmFjdG9yaW5nIFZibGFuayBXYWl0IExvZ2ljKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvciwgbW9zdGx5IHRvdWNoaW5nIHRoZSB2Ymxhbmsgd2FpdGluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBEUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHNob3VsZCBiZSBLTVNBTi1zYWZlLCBidXQgbGV0J3MgYnJlYWsgaXQgZG93biB0byBiZSBzdXJlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHB1bGxpbmcgb3V0IHRoZSBhY3R1YWwgd2FpdGluZyBsb2dpYyBpbnRvIGEgbmV3IGludGVybmFsIGZ1bmN0aW9uLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYC4gTG9va2luZyBhdCB0aGF0IHNuaXBwZXQgb2YgY29kZSwgaXQncyBwcmV0dHkgc3RhbmRhcmQ6IGl0IGdyYWJzIHRoZSBjdXJyZW50IHZibGFuayBjb3VudCwgdGhlbiB3YWl0cywgd2l0aCBhIHRpbWVvdXQsIGZvciB0aGF0IGNvdW50IHRvIGNoYW5nZS4gVGhlIGB3YWl0X2V2ZW50X3RpbWVvdXRgIGNhbGwgaXMgdGhlIGtleSBwaWVjZSB0aGVyZSwgYmxvY2tpbmcgdW50aWwgdGhlIHZibGFuayBjb3VudCBoYXMgaW5jcmVtZW50ZWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJlcy4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc3RhbmRhcmQga2VybmVsLXN0eWxlIGludGVycHJldGF0aW9uIG9mIHN1Y2Nlc3Mgb3IgdGltZW91dC5cblxuVGhlIHJhdGlvbmFsZSBzZWVtcyB0byBiZSBhYm91dCByZWZlcmVuY2UgY291bnRpbmcuIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSB2Ymxhbmsgb2JqZWN0IHZpYSBgZHJtX2NydGNfdmJsYW5rX2dldGAuIENhbGxpbmcgdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHdvdWxkIHJlc3VsdCBpbiBhbiB1bm5lY2Vzc2FyeSBhZGRpdGlvbmFsIGdldC9wdXQuIFRoaXMgcmVmYWN0b3JpbmcsIGFuZCB0aGUgdXNlIG9mIHRoZSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24sIGF2b2lkcyB0aGF0IHJlZHVuZGFudCBnZXQvcHV0LiBTZWVtcyBzZW5zaWJsZS5cblxuU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGZvciBLTVNBTiBpczogYXJlIHRoZXJlIGFueSBuZXcgcG90ZW50aWFsIHNvdXJjZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLiBUaGlzIHBhdGNoIHN0cmljdGx5IHJlYXJyYW5nZXMgKmV4aXN0aW5nKiBsb2dpYy4gSSdtIHNlZWluZyBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGludHJvZHVjZWQsIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgY29waWVzIHdoZXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbnRlbnRzLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgdGhlIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50LlxuXG5UaGUgS01TQU4gaW1wbGljYXRpb25zIGFyZSBiYXNpY2FsbHkgemVyby4gVGhpcyBpcyBmb2N1c2VkIG9uIGNvbmN1cnJlbmN5IGFuZCByZWZlcmVuY2UgY291bnRpbmcsIHdoaWNoIGFyZW4ndCBpbiB0aGUgc2NvcGUgb2Ygd2hhdCBLTVNBTiBpcyBsb29raW5nIGZvci4gVGhpcyBwYXRjaCBjYW4gYmUgY29uZmlkZW50bHkgbWFya2VkIGFzIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MCwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMjoyNy42ODYxODgzNTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowplkr7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 10:09:54 +0000 UTC FinishedAt: 2026-08-12 10:12:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS" ], "series_id": "c8176a1e-a31a-4266-8d34-972b2683dbf4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "drm_client_modeset_wait_for_vblank", "drm_crtc_wait_one_vblank", "drm_crtc_wait_one_vblank_internal" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHZibGFuayB3YWl0aW5nIGxvZ2ljIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiwgcmVmZXJlbmNlIGNvdW50aW5nLCBvciB0aW1lb3V0cywgd2hpY2ggYXJlIG5vdCBpbiB0aGUgc2NvcGUgb2YgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NGE3ZDE1YmYyODFkMjA5MjVlNTcyMDViZGE2NzdlZTQ4NjI4MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxuIFx0ICovXG4gXHRyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpO1xuIFx0aWYgKCFyZXQpIHtcbi1cdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xuJiM0MztcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgJiM0MzsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4mIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbiBcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbmluZGV4IGY5MGZiMmQxM2U0MjMuLjljYWM3MDEzYjRjOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5AQCAtMTI5Nyw2ICYjNDM7MTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuJiM0MzsgKiBAY3J0YzogRFJNIGNydGNcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuJiM0MzsgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuJiM0MztcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1x0dTY0IGxhc3Q7XG4mIzQzO1xuJiM0MztcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4mIzQzO1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICYjNDM7MTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcJiMzNDt2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCByZXQ9JWlcXG5cJiMzNDssXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuJiM0MztcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwmIzM0O3ZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCYjMzQ7LCBwaXBlKTtcbiYjNDM7XHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwmIzM0OywgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEUk0gdmJsYW5rIHdhaXRpbmcgbG9naWMsIGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgRFJNIGFuZCBmYmRldiBpb2N0bHMgKGUuZy4sIGBGQklPUEFOX0RJU1BMQVlgLCBgRkJJT19XQUlURk9SVlNZTkNgKSBhbmQgYXJlIGV4ZWN1dGVkIGJ5IHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaQogCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7CiAJaWYgKCFyZXQpIHsKLQkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpOwomIzQzOwkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpOwogCQlkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwomIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIAogLyogZHJtX3ZibGFua193b3JrLmMgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7CiAKJiM0MzsvKioKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVmYWN0b3Jpbmcgc29tZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBkcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcm1fdmJsYW5rLmNgLiBUaGV5JiMzOTt2ZSBwdWxsZWQgb3V0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGZyb20gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYW5kIGFyZSB1c2luZyBpdCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBtb3RpdmF0aW9uIHNlZW1zIHRvIGJlIHRvIGF2b2lkIGEgcmVkdW5kYW50IGBkcm1fdmJsYW5rX2dldGAgY2FsbCBiZWNhdXNlIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhbHJlYWR5IG1hbmFnaW5nIHZibGFuayBhY3F1aXNpdGlvbi4gU21hcnQuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSosIGFuZCBpcyBpdCBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBUaGUgRFJNIHN1YnN5c3RlbSBhcyBhIHdob2xlIGlzIGFic29sdXRlbHkgZnV6emFibGU7IHZnZW0sIHZrbXMg4oCTIHRoZXJlIGFyZSBkZWZpbml0ZWx5IGtub3duIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGF0IHNwYWNlLiBOb3csIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCB3aGljaCwgZnJvbSB3aGF0IEkga25vdywgaXMgdXNlZCBpbiBEUk0gY2xpZW50IG1vZGVzZXQgZnVuY3Rpb25hbGl0eS4gQW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGlzIGV4cG9ydGVkIGFuZCB1c2VkIGJ5IGRyaXZlcnMsIHNvIHRoYXQgc291bmRzIHByb21pc2luZyB0b28uCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgdG8gYWN0dWFsbHkgYnVpbGQgYW5kIHRlc3QgdGhpcyBjb2RlLiBgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY2AgaXMsIG9idmlvdXNseSwgcGFydCBvZiB0aGUgc3RhbmRhcmQgRFJNIGJ1aWxkLiBBbmQgdGhlbiwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY2AgaXMgcGFydCBvZiBEUk1fQ0xJRU5ULCBzbyBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBwcmFjdGljYWwuIExldCYjMzk7cyBkbyBhIHF1aWNrIGdyZXAgc2VhcmNoIGZvciBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2Ygd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogYW5kIGhvdyBvZnRlbi4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEyOTctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMjk5LSAqIEBjbGllbnQ6IERSTSBjbGllbnRcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzA5OmludCBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1bnNpZ25lZCBpbnQgY3J0Y19pbmRleClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzEwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzOC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMzOTpFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYz0zMTU9c3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMzI2LVx0aWYgKGNydGNfaW5kZXggXHUwMDNlPSAwKVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzozMjc6XHRcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXHUwMDI2aGVscGVyLVx1MDAzZWNsaWVudCwgY3J0Y19pbmRleCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cdG11dGV4X3VubG9jayhcdTAwMjZoZWxwZXItXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYz05ODQ9aW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDA5LVx0XHQgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxMDpcdFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcdTAwMjZmYl9oZWxwZXItXHUwMDNlY2xpZW50LCAwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cdFx0YnJlYWs7XG4tLVxuaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oPTIxOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIGludCBtb2RlKTtcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaDoyMjA6aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KTtcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaC0yMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYC9kZXYvZmIwYCBWQkxBTksgV2FpdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIGZ1enppbmcgdGFyZ2V0LiBUaGUgZnVuY3Rpb24gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGNhbGxlZCB3aXRoaW4gYGRybV9mYl9oZWxwZXJfaW9jdGxgLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGlvY3RscyBvbiBgL2Rldi9mYjBgLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYEZCSU9QQU5fRElTUExBWWAgb3IgYEZCSU9fV0FJVEZPUlZTWU5DYCBjb21tYW5kcy4gVGhpcyBwYXRoIHRvIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBzZWVtcyBoaWdobHkgcmVhY2hhYmxlIGFuZCB0aHVzLCBwcmVzZW50cyBhIHNvbGlkIGF0dGFjayBzdXJmYWNlLiBEZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgdGltZSBvbiB0aGlzLgoKTm93LCBsZXQgbWUgZGlnIGEgYml0IGRlZXBlciBpbnRvIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gSSBzaG91bGQgaW52ZXN0aWdhdGUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHRvIHNlZSBob3cgdGhleSBmaXQgaW50byB0aGUgcGljdHVyZS4gVGhleSBtaWdodCBleHBvc2Ugc2ltaWxhciBmdW5jdGlvbmFsaXR5IG9yIG9mZmVyIGFkZGl0aW9uYWwgZW50cnkgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmM9MjI4Nz1zdGF0aWMgdm9pZCBkcm1fZHBfYXV4X2NyY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMC1cdHdoaWxlIChjcnRjLVx1MDAzZWNyYy5vcGVuZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYzoyMzAxOlx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMi1cdFx0aWYgKCFjcnRjLVx1MDAzZWNyYy5vcGVuZWQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEzMDk9aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzMwLVx0aWYgKCFyZXQpIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzMxOlx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMi1cdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg9MTE3PXU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoxMTg6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTExOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jPTEyOTg9RVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMDAtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMDE6ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMxMC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzI3OiAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMyOC0gKiBAY3J0YzogRFJNIGNydGNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzUtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMzY6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM0Ni1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM0OC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNTQtfVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzU1OkVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz02Nz12b2lkIGludGVsX2NydGNfd2FpdF9mb3JfbmV4dF92Ymxhbmsoc3RydWN0IGludGVsX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2OTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZjcnRjLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmMtNzAtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pbmdlbmljL2luZ2VuaWMtZHJtLWRydi5jPTIxMz1zdGF0aWMgaW50IGluZ2VuaWNfZHJtX3VwZGF0ZV9waXhjbGsoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXHRcdHByaXYtXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcbmRyaXZlcnMvZ3B1L2RybS9pbmdlbmljL2luZ2VuaWMtZHJtLWRydi5jOjIyMzpcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFx1MDAyNnByaXYtXHUwMDNlY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXHRcdHJldHVybiBOT1RJRllfT0s7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM9ODA1PXN0YXRpYyB2b2lkIG10a19jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXHQvKiBXYWl0IGZvciBwbGFuZXMgdG8gYmUgZGlzYWJsZWQgKi9cbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jOjgzNzpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jLTgzOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYy00NC1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYy00Ni19XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM9MTc3MT1zdGF0aWMgaW50IHRlZ3JhX2RjX3Nob3dfY3JjKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc4OTpcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZkYy1cdTAwM2ViYXNlKTtcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3OTA6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2ZGMtXHUwMDNlYmFzZSk7XG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxuLS1cbmluY2x1ZGUvZHJtL2RybV92YmxhbmsuaD0zMDQ9dm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmg6MzA1OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbmluY2x1ZGUvZHJtL2RybV92YmxhbmsuaC0zMDYtdm9pZCBkcm1fY3J0Y192Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEUk1CdWdmaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIHJlY3Vyc2lvbiBpc3N1ZSBpbiB0aGUgRFJNIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgdmJsYW5rIHdhaXRpbmcuIFRoZSBwcm9ibGVtIGlzIHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AsIHdoaWNoIHdhcyBjYWxsaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGF0IGZ1bmN0aW9uIGluIHR1cm4gd2FzIGNhbGxpbmcgYGRybV92YmxhbmtfZ2V0YCBhZ2FpbiwgbGVhZGluZyB0byBwb3RlbnRpYWwgZmFpbHVyZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjdXJzaW9uIHRyYXAsIGEgcmVhbCBoZWFkLXNjcmF0Y2hlci4KClRoZSBwcm9wb3NlZCBzb2x1dGlvbiBpbnZvbHZlcyBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBhbmQgdXNpbmcgdGhhdCB3aXRoaW4gKmJvdGgqIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgdGhlIG9yaWdpbmFsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBTbWFydC4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgdGhhdCByZS1lbnRyYW50IGNhbGwgdG8gYGRybV92YmxhbmtfZ2V0YC4gCgpTbywgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdHdvIGZ1bmN0aW9uczogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgcHJvYmxlbWF0aWMgYGRybV92YmxhbmtfZ2V0YCBjYWxsIGluIGJvdGggb3JpZ2luYWwgZnVuY3Rpb25zLgoKQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLCB3ZSBuZWVkIGBEUk1gIGVuYWJsZWQsIGFuZCBlaXRoZXIgYERSTV9DTElFTlRfU0VMRUNUSU9OYCBvciBgRFJNX0ZCREVWX0VNVUxBVElPTmAgKHdoaWNoIHB1bGxzIGluIGBkcm1fZmJfaGVscGVyLmNgKS4gTGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgZGV0YWlscyBmb3IgYERSTV9DTElFTlRfU0VMRUNUSU9OYC4gR290dGEgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIHNvbGlkIGFuZCB0aGF0IHRoaXMgZml4IGlzIG9ubHkgYXBwbGllZCB3aGVuIGFwcHJvcHJpYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0xJRU5UX1NFTEVDVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTM9Y29uZmlnIERSTV9DTElFTlRfTElCXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0xMS1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MTI6Y29uZmlnIERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTEzLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRFJNIEZCREVWIEVtdWxhdGlvbiAtIExldCYjMzk7cyBEaWcgSW4qKgoKQWxyaWdodCwgYmVmb3JlIEkgZ28gZG93biBhbnkgcmFiYml0IGhvbGVzIHdpdGggdGhpcyBkaXNwbGF5IGlzc3VlLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBob3cgdGhlIGtlcm5lbCBjb25maWcgaXMgc2V0IHVwIGZvciB0aGUgZnJhbWUgYnVmZmVyIGVtdWxhdGlvbiBzdXBwb3J0LiBMZXQmIzM5O3Mgc2VlIGhvdyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgZWFybHkgc3RlcDsgSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN5c3RlbSBpcyBldmVuICpjb25maWd1cmVkKiB0byBwb3RlbnRpYWxseSB1c2UgdGhlIG9sZGVyIGZyYW1lYnVmZmVyIGludGVyZmFjZSBvciBpZiB0aGF0JiMzOTtzIGRlZmluaXRpdmVseSBkaXNhYmxlZC4gVGhhdCBLY29uZmlnIGVudHJ5IGlzIHRoZSBsaW5jaHBpbiBoZXJlLiBJdCBkaWN0YXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgc3lzdGVtIGV2ZW4gaGFzIGEgcGF0aCB0byB0aGUgZnJhbWVidWZmZXIsIHdoaWNoIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoaXMuIFRpbWUgdG8gZ2V0IGludG8gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCBhbmQgdmVyaWZ5IGl0cyBzdGF0ZS4gS25vd2luZyB0aGUgY29uZmlnIGlzIGtleSBmb3IgYWxsIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXCYjMzQ7U3VwcG9ydGVkIERSTSBjbGllbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBhcyBJIHdvdWxkIG15c2VsZi4KCioqQ29uc2lkZXJpbmcgRFJNIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3aGVuIHNldHRpbmcgdXAgYSBkaXNwbGF5IG9yIGdyYXBoaWNzIGRyaXZlciwgYERSTWAgYW5kIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgZ2VuZXJhbGx5IGJlbmVmaWNpYWwgb3B0aW9ucyB0byBlbmFibGUuIFRoZXkmIzM5O3JlIHByZXR0eSBmb3VuZGF0aW9uYWwuIE5vdywgaWYgSSYjMzk7bSBsb29raW5nIGZvciBhIHZpcnR1YWwgRFJNIGRyaXZlciB0byBoZWxwIHdpdGggdGVzdGluZyBvciBpbiBhIGhlYWRsZXNzIGVudmlyb25tZW50LCB0aGF0JiMzOTtzIHdoZXJlIGBEUk1fVktNU2Agb3IgYERSTV9WR0VNYCBjb21lIGludG8gcGxheS4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25zaWRlciB0aGVzZS4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgYW5kIGN1cnJlbnQgcHJvamVjdCwgSSB0aGluayBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBEUk1fVktNU2AuIEkgY2FuIHByb2JhYmx5IGdldCB0aGUgaW5mbyBJIG5lZWQgZnJvbSB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9WS01TJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMi1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6Mzpjb25maWcgRFJNX1ZLTVNcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0xOC1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6MTk6Y29uZmlnIERSTV9WS01TX0tVTklUX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgVktNU1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYERSTV9WR0VNYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgRFJNX1ZHRU1gLiBHb3R0YSBjaGVjayB0aGF0IG91dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGN1cnJlbnQgc3RhdGUuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/IExldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVsZXZhbnQgYW5kIGhvdyBpdCBjb3VsZCBpbmZsdWVuY2UgdGhlIHNpdHVhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9WR0VNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc6Mjpjb25maWcgRFJNX1ZHRU1cbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgR0VNIHByb3ZpZGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDUKCQkJCQkJCW91dHB1dDogMjAxCgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gVmJsYW5rIFdhaXRpbmcgTG9naWMgQ2hhbmdlcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgZGVlcCBpbiB0aGUgY29yZSBEUk0gc3Vic3lzdGVtIOKAkyBjaGFuZ2VzIHRvIGhvdyBpdCBoYW5kbGVzIFZCTEFOSyB3YWl0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uIGJlY2F1c2UgdGhvc2Uga2luZHMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGlvY3Rscy4gV2UmIzM5O3JlIHRhbGtpbmcgc3R1ZmYgbGlrZSBgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LYCwgb3IgZXZlbiB0aGUgb2xkZXIgZmJkZXYgaW9jdGxzLgoKTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBlbnRyeSBwb2ludHMgdG8gdGhpcyBuZXcgbG9naWMuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIHN0YXRpYyBvciBpZiBpdCYjMzk7cyBleHBvcnRlZC4gQWxyaWdodCwgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBhbmQgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGRybV9pbnRlcm5hbC5oYC4gU28gaXQmIzM5O3MgaW50ZXJuYWwgdG8gRFJNLCBidXQgKm5vdCogc3RhdGljLiBXZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGl0IGZvciBmb2N1cyBpbiB0aGUgZnV6emluZy4KCkxldCYjMzk7cyBwcmVwYXJlIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24uCgpXb3J0aEZ1enppbmc6IFllcywgZGVmaW5pdGVseS4gVGhlc2UgYXJlIGNvcmUgRFJNIGZ1bmN0aW9ucywgYW5kIFZCTEFOSyB3YWl0aW5nIGlzIGNyaXRpY2FsLgoKRm9jdXNTeW1ib2xzOgotIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYAotIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgCi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAKCkVuYWJsZUNvbmZpZ3M6Ci0gRFJNOiBPYnZpb3VzbHksIHdlIG5lZWQgdGhlIGNvcmUgRFJNIGRyaXZlciBlbmFibGVkLgotIERSTV9GQkRFVl9FTVVMQVRJT046IFdlIG5lZWQgdGhlIGZiZGV2IGVtdWxhdGlvbiwgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSBmYmRldiBpb2N0bHMuCi0gRFJNX1ZLTVM6IFRoZSBWS01TIHZpcnR1YWwgZHJpdmVyIGlzIGltcG9ydGFudC4gV2UgY2FuIHRlc3QgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgoKTXkgcmVhc29uaW5nIGlzIHRoaXM6IFRoaXMgcGF0Y2ggaXMgcmV3b3JraW5nIHRoZSBWQkxBTksgd2FpdGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgaXMgYWxsIHRvIHByZXZlbnQgdGhlIGRyZWFkZWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW5zaWRlIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gQmVjYXVzZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ugd2l0aCBEUk0gYW5kIGZiZGV2IGlvY3RscyBsaWtlIGBGQklPUEFOX0RJU1BMQVlgIGFuZCBgRkJJT19XQUlURk9SVlNZTkNgLCB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBWS01TIHdpbGwgYWxzbyBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzIGFuZCBzaG91bGQgYmUgaW5jbHVkZWQgZHVyaW5nIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7LAogICAgJiMzNDtEUk1fVktNUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERSTSB2Ymxhbmsgd2FpdGluZyBsb2dpYywgZXh0cmFjdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCBkb3VibGUgYGRybV92YmxhbmtfZ2V0YCBjYWxscyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBEUk0gYW5kIGZiZGV2IGlvY3RscyAoZS5nLiwgYEZCSU9QQU5fRElTUExBWWAsIGBGQklPX1dBSVRGT1JWU1lOQ2ApIGFuZCBhcmUgZXhlY3V0ZWQgYnkgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdmJsYW5rIHdhaXRpbmcgbG9naWMgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uLCByZWZlcmVuY2UgY291bnRpbmcsIG9yIHRpbWVvdXRzLCB3aGljaCBhcmUgbm90IGluIHRoZSBzY29wZSBvZiBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKQEAgLTEzMjgsNyAmIzQzOzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaQogCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7CiAJaWYgKCFyZXQpIHsKLQkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpOwomIzQzOwkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpOwogCQlkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwomIzQzO2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIAogLyogZHJtX3ZibGFua193b3JrLmMgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7CiAKJiM0MzsvKioKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1MAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiA1MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogUmVmYWN0b3JpbmcgVmJsYW5rIFdhaXQgTG9naWMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvciwgbW9zdGx5IHRvdWNoaW5nIHRoZSB2Ymxhbmsgd2FpdGluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBEUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHNob3VsZCBiZSBLTVNBTi1zYWZlLCBidXQgbGV0JiMzOTtzIGJyZWFrIGl0IGRvd24gdG8gYmUgc3VyZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgcHVsbGluZyBvdXQgdGhlIGFjdHVhbCB3YWl0aW5nIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBMb29raW5nIGF0IHRoYXQgc25pcHBldCBvZiBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQ6IGl0IGdyYWJzIHRoZSBjdXJyZW50IHZibGFuayBjb3VudCwgdGhlbiB3YWl0cywgd2l0aCBhIHRpbWVvdXQsIGZvciB0aGF0IGNvdW50IHRvIGNoYW5nZS4gVGhlIGB3YWl0X2V2ZW50X3RpbWVvdXRgIGNhbGwgaXMgdGhlIGtleSBwaWVjZSB0aGVyZSwgYmxvY2tpbmcgdW50aWwgdGhlIHZibGFuayBjb3VudCBoYXMgaW5jcmVtZW50ZWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJlcy4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc3RhbmRhcmQga2VybmVsLXN0eWxlIGludGVycHJldGF0aW9uIG9mIHN1Y2Nlc3Mgb3IgdGltZW91dC4KClRoZSByYXRpb25hbGUgc2VlbXMgdG8gYmUgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgdmJsYW5rIG9iamVjdCB2aWEgYGRybV9jcnRjX3ZibGFua19nZXRgLiBDYWxsaW5nIHRoZSBleGlzdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB3b3VsZCByZXN1bHQgaW4gYW4gdW5uZWNlc3NhcnkgYWRkaXRpb25hbCBnZXQvcHV0LiBUaGlzIHJlZmFjdG9yaW5nLCBhbmQgdGhlIHVzZSBvZiB0aGUgbmV3IGludGVybmFsIGZ1bmN0aW9uLCBhdm9pZHMgdGhhdCByZWR1bmRhbnQgZ2V0L3B1dC4gU2VlbXMgc2Vuc2libGUuCgpTbywgdGhlIGNvcmUgcXVlc3Rpb24gZm9yIEtNU0FOIGlzOiBhcmUgdGhlcmUgYW55IG5ldyBwb3RlbnRpYWwgc291cmNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoaXMgcGF0Y2ggc3RyaWN0bHkgcmVhcnJhbmdlcyAqZXhpc3RpbmcqIGxvZ2ljLiBJJiMzOTttIHNlZWluZyBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGludHJvZHVjZWQsIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgY29waWVzIHdoZXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbnRlbnRzLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgdGhlIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50LgoKVGhlIEtNU0FOIGltcGxpY2F0aW9ucyBhcmUgYmFzaWNhbGx5IHplcm8uIFRoaXMgaXMgZm9jdXNlZCBvbiBjb25jdXJyZW5jeSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLCB3aGljaCBhcmVuJiMzOTt0IGluIHRoZSBzY29wZSBvZiB3aGF0IEtNU0FOIGlzIGxvb2tpbmcgZm9yLiBUaGlzIHBhdGNoIGNhbiBiZSBjb25maWRlbnRseSBtYXJrZWQgYXMgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdmJsYW5rIHdhaXRpbmcgbG9naWMgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uLCByZWZlcmVuY2UgY291bnRpbmcsIG9yIHRpbWVvdXRzLCB3aGljaCBhcmUgbm90IGluIHRoZSBzY29wZSBvZiBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMToxMy4yMjgzMzY5NzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ1Nzg4MjYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6MTMuMjI4MzQzNzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU1NzkzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xcbkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxcbiBcXHQgKi9cXG4gXFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xcbitcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcdFxcdGRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXFxuQEAgLTExNSw2ICsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG4gXFxuIC8qIGRybV92Ymxhbmtfd29yay5jICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXFxuaW5kZXggZjkwZmIyZDEzZTQyMy4uOWNhYzcwMTNiNGM5YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbkBAIC0xMjk3LDYgKzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbiBcXG4rLyoqXFxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4rICogQGNydGM6IERSTSBjcnRjXFxuKyAqXFxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cXG4rICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LlxcbisgKlxcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxcbisgKi9cXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuK3tcXG4rXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4rXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4rXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuK1xcdGludCByZXQ7XFxuK1xcdHU2NCBsYXN0O1xcbitcXG4rXFx0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcXG4rXFxuK1xcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXFx1MDAzZXF1ZXVlLFxcbitcXHRcXHRcXHRcXHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXFxuK1xcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcXG4rXFxuK1xcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4gICogQGNydGM6IERSTSBjcnRjXFxuQEAgLTEzMTEsMjYgKzEzMzcsMjAgQEAgaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIHtcXG4gXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4gXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4tXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuIFxcdGludCByZXQ7XFxuLVxcdHU2NCBsYXN0O1xcbiBcXG4gXFx0cmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTtcXG4gXFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcXFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIHBpcGUsIHJldCkpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xcbi1cXG4tXFx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cXHUwMDNlcXVldWUsXFxuLVxcdFxcdFxcdFxcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcXG4tXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbitcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcbi1cXHRkcm1fV0FSTihkZXYsIHJldCA9PSAwLCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbitcXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbiBcXG4gXFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcXG4gXFxuLVxcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMToxNC40ODQ5Nzk3ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2Mjg1NjAwMzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIERSTSB2Ymxhbmsgd2FpdGluZyBsb2dpYywgZXh0cmFjdGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCBkb3VibGUgYGRybV92YmxhbmtfZ2V0YCBjYWxscyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBEUk0gYW5kIGZiZGV2IGlvY3RscyAoZS5nLiwgYEZCSU9QQU5fRElTUExBWWAsIGBGQklPX1dBSVRGT1JWU1lOQ2ApIGFuZCBhcmUgZXhlY3V0ZWQgYnkgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE2NGE3ZDE1YmYyODFkMjA5MjVlNTcyMDViZGE2NzdlZTQ4NjI4MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMDoxMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbitcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi45Y2FjNzAxM2I0YzljIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiArMTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuKy8qKlxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbisgKiBAY3J0YzogRFJNIGNydGNcbisgKlxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cbisgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4rICpcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxuKyAqL1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuK3tcbitcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbitcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4rXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbitcdGludCByZXQ7XG4rXHR1NjQgbGFzdDtcbitcbitcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4rXG4rXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuK1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1xuK1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK31cbitcbiAvKipcbiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG4gICogQGNydGM6IERSTSBjcnRjXG5AQCAtMTMxMSwyNiArMTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcInZibGFuayBub3QgYXZhaWxhYmxlIG9uIGNydGMgJWksIHJldD0laVxcblwiLFxuIFx0XHQgICAgIHBpcGUsIHJldCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xuLVxuLVx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcbi1cdFx0XHRcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcbi1cdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbitcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4rXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcInZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCIsIHBpcGUpO1xuIFxuIFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcbiBcbi1cdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjE0LjQ4NDk4MjkxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NjI1OTk0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRFJNIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgcmVmYWN0b3Jpbmcgc29tZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBkcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcm1fdmJsYW5rLmNgLiBUaGV5J3ZlIHB1bGxlZCBvdXQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgZnJvbSBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYXJlIHVzaW5nIGl0IGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlIG1vdGl2YXRpb24gc2VlbXMgdG8gYmUgdG8gYXZvaWQgYSByZWR1bmRhbnQgYGRybV92YmxhbmtfZ2V0YCBjYWxsIGJlY2F1c2UgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFscmVhZHkgbWFuYWdpbmcgdmJsYW5rIGFjcXVpc2l0aW9uLiBTbWFydC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGNvZGUgcGF0aCBldmVuICpyZWFjaGFibGUqLCBhbmQgaXMgaXQgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZz8gVGhlIERSTSBzdWJzeXN0ZW0gYXMgYSB3aG9sZSBpcyBhYnNvbHV0ZWx5IGZ1enphYmxlOyB2Z2VtLCB2a21zIOKAkyB0aGVyZSBhcmUgZGVmaW5pdGVseSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gdGhhdCBzcGFjZS4gTm93LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCwgd2hpY2gsIGZyb20gd2hhdCBJIGtub3csIGlzIHVzZWQgaW4gRFJNIGNsaWVudCBtb2Rlc2V0IGZ1bmN0aW9uYWxpdHkuIEFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBkcml2ZXJzLCBzbyB0aGF0IHNvdW5kcyBwcm9taXNpbmcgdG9vLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyByZXF1aXJlZCB0byBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzIGNvZGUuIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jYCBpcywgb2J2aW91c2x5LCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBEUk0gYnVpbGQuIEFuZCB0aGVuLCBgZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jYCBpcyBwYXJ0IG9mIERSTV9DTElFTlQsIHNvIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGVuYWJsZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHByYWN0aWNhbC4gTGV0J3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNlbnNlIG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIGFuZCBob3cgb2Z0ZW4uIFRoYXQgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjIyLjA0NzU4NjgzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMTk2MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5OS0gKiBAY2xpZW50OiBEUk0gY2xpZW50XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMwOTppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzgtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyNi1cXHRpZiAoY3J0Y19pbmRleCBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MzI3OlxcdFxcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXFx1MDAyNmhlbHBlci1cXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhlbHBlci1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAwOS1cXHRcXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjEwMTA6XFx0XFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcXHUwMDI2ZmJfaGVscGVyLVxcdTAwM2VjbGllbnQsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cXHRcXHRicmVhaztcXG4tLVxcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaD0yMTk9aW50IGRybV9jbGllbnRfbW9kZXNldF9kcG1zKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCBpbnQgbW9kZSk7XFxuaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oOjIyMDppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpO1xcbmluY2x1ZGUvZHJtL2RybV9jbGllbnQuaC0yMjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjIzLjc3ODc5MDA1OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzI5NjY0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGAvZGV2L2ZiMGAgVkJMQU5LIFdhaXQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYSBwcm9taXNpbmcgZnV6emluZyB0YXJnZXQuIFRoZSBmdW5jdGlvbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgaXMgY2FsbGVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggaW9jdGxzIG9uIGAvZGV2L2ZiMGAsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgRkJJT1BBTl9ESVNQTEFZYCBvciBgRkJJT19XQUlURk9SVlNZTkNgIGNvbW1hbmRzLiBUaGlzIHBhdGggdG8gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIHNlZW1zIGhpZ2hseSByZWFjaGFibGUgYW5kIHRodXMsIHByZXNlbnRzIGEgc29saWQgYXR0YWNrIHN1cmZhY2UuIERlZmluaXRlbHkgd29ydGggc3BlbmRpbmcgc29tZSB0aW1lIG9uIHRoaXMuXG5cbk5vdywgbGV0IG1lIGRpZyBhIGJpdCBkZWVwZXIgaW50byByZWxhdGVkIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIEkgc2hvdWxkIGludmVzdGlnYXRlIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB0byBzZWUgaG93IHRoZXkgZml0IGludG8gdGhlIHBpY3R1cmUuIFRoZXkgbWlnaHQgZXhwb3NlIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBvciBvZmZlciBhZGRpdGlvbmFsIGVudHJ5IHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTozMS41NTE3NTkwNzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxMjQzNjY2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jPTIyODc9c3RhdGljIHZvaWQgZHJtX2RwX2F1eF9jcmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMC1cXHR3aGlsZSAoY3J0Yy1cXHUwMDNlY3JjLm9wZW5lZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYzoyMzAxOlxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMtMjMwMi1cXHRcXHRpZiAoIWNydGMtXFx1MDAzZWNyYy5vcGVuZWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTMwOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMC1cXHRpZiAoIXJldCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzMxOlxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMzMi1cXHRcXHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oPTExNz11NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjExODppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTExOS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAwLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwMTogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI4LSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMzNjppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNTU6RVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jPTY3PXZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9uZXh0X3ZibGFuayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZjcnRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy03MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXFx0XFx0cHJpdi1cXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZwcml2LVxcdTAwM2VjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXFx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXFxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM6ODM3OlxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ2LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZkYy1cXHUwMDNlYmFzZSk7XFxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc5MDpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXFx1MDAyNmRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oPTMwND12b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmg6MzA1OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcXG5pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmgtMzA2LXZvaWQgZHJtX2NydGNfdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTozMy4zNjQyMDM1MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDEzNDU0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERSTUJ1Z2ZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IGEgcmVjdXJzaW9uIGlzc3VlIGluIHRoZSBEUk0gY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB2Ymxhbmsgd2FpdGluZy4gVGhlIHByb2JsZW0gaXMgd2l0aGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCwgd2hpY2ggd2FzIGNhbGxpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoYXQgZnVuY3Rpb24gaW4gdHVybiB3YXMgY2FsbGluZyBgZHJtX3ZibGFua19nZXRgIGFnYWluLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBmYWlsdXJlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaGF0J3MgYSBjbGFzc2ljIHJlY3Vyc2lvbiB0cmFwLCBhIHJlYWwgaGVhZC1zY3JhdGNoZXIuXG5cblRoZSBwcm9wb3NlZCBzb2x1dGlvbiBpbnZvbHZlcyBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBhbmQgdXNpbmcgdGhhdCB3aXRoaW4gKmJvdGgqIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgdGhlIG9yaWdpbmFsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBTbWFydC4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgdGhhdCByZS1lbnRyYW50IGNhbGwgdG8gYGRybV92YmxhbmtfZ2V0YC4gXG5cblNvLCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCBpcyB1c2VkIHRvIHByZXZlbnQgdGhlIHByb2JsZW1hdGljIGBkcm1fdmJsYW5rX2dldGAgY2FsbCBpbiBib3RoIG9yaWdpbmFsIGZ1bmN0aW9ucy5cblxuQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQncyBzZWUsIHdlIG5lZWQgYERSTWAgZW5hYmxlZCwgYW5kIGVpdGhlciBgRFJNX0NMSUVOVF9TRUxFQ1RJT05gIG9yIGBEUk1fRkJERVZfRU1VTEFUSU9OYCAod2hpY2ggcHVsbHMgaW4gYGRybV9mYl9oZWxwZXIuY2ApLiBMZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMgZm9yIGBEUk1fQ0xJRU5UX1NFTEVDVElPTmAuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzb2xpZCBhbmQgdGhhdCB0aGlzIGZpeCBpcyBvbmx5IGFwcGxpZWQgd2hlbiBhcHByb3ByaWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo0MS4zNzc2NjAxOTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NzM4NjEzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0NMSUVOVF9TRUxFQ1RJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0zPWNvbmZpZyBEUk1fQ0xJRU5UX0xJQlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnOjEyOmNvbmZpZyBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMTMtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6NDIuOTc1MDUzNjA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzM3MjM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRFJNIEZCREVWIEVtdWxhdGlvbiAtIExldCdzIERpZyBJbioqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGRvd24gYW55IHJhYmJpdCBob2xlcyB3aXRoIHRoaXMgZGlzcGxheSBpc3N1ZSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgZnVuZGFtZW50YWwuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgaG93IHRoZSBrZXJuZWwgY29uZmlnIGlzIHNldCB1cCBmb3IgdGhlIGZyYW1lIGJ1ZmZlciBlbXVsYXRpb24gc3VwcG9ydC4gTGV0J3Mgc2VlIGhvdyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgZGVmaW5lZC4gVGhpcyBpcyBhIGNydWNpYWwgZWFybHkgc3RlcDsgSSBuZWVkIHRvIGtub3cgaWYgdGhlIHN5c3RlbSBpcyBldmVuICpjb25maWd1cmVkKiB0byBwb3RlbnRpYWxseSB1c2UgdGhlIG9sZGVyIGZyYW1lYnVmZmVyIGludGVyZmFjZSBvciBpZiB0aGF0J3MgZGVmaW5pdGl2ZWx5IGRpc2FibGVkLiBUaGF0IEtjb25maWcgZW50cnkgaXMgdGhlIGxpbmNocGluIGhlcmUuIEl0IGRpY3RhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBzeXN0ZW0gZXZlbiBoYXMgYSBwYXRoIHRvIHRoZSBmcmFtZWJ1ZmZlciwgd2hpY2ggd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhpcy4gVGltZSB0byBnZXQgaW50byBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgIGFuZCB2ZXJpZnkgaXRzIHN0YXRlLiBLbm93aW5nIHRoZSBjb25maWcgaXMga2V5IGZvciBhbGwgdGhlIHN1YnNlcXVlbnQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo0Ni42ODg0Mjg4NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzc0NTE2MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0yOD1tZW51IFxcXCJTdXBwb3J0ZWQgRFJNIGNsaWVudHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjQ4LjMyNTg5MDQ1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE5ODEyMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9ucywgdGhpbmtpbmcgdGhyb3VnaCB0aGVtIGFzIEkgd291bGQgbXlzZWxmLlxuXG4qKkNvbnNpZGVyaW5nIERSTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHdoZW4gc2V0dGluZyB1cCBhIGRpc3BsYXkgb3IgZ3JhcGhpY3MgZHJpdmVyLCBgRFJNYCBhbmQgYERSTV9GQkRFVl9FTVVMQVRJT05gIGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcyBnZW5lcmFsbHkgYmVuZWZpY2lhbCBvcHRpb25zIHRvIGVuYWJsZS4gVGhleSdyZSBwcmV0dHkgZm91bmRhdGlvbmFsLiBOb3csIGlmIEknbSBsb29raW5nIGZvciBhIHZpcnR1YWwgRFJNIGRyaXZlciB0byBoZWxwIHdpdGggdGVzdGluZyBvciBpbiBhIGhlYWRsZXNzIGVudmlyb25tZW50LCB0aGF0J3Mgd2hlcmUgYERSTV9WS01TYCBvciBgRFJNX1ZHRU1gIGNvbWUgaW50byBwbGF5LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbnNpZGVyIHRoZXNlLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBhbmQgY3VycmVudCBwcm9qZWN0LCBJIHRoaW5rIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgRFJNX1ZLTVNgLiBJIGNhbiBwcm9iYWJseSBnZXQgdGhlIGluZm8gSSBuZWVkIGZyb20gdGhlcmUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3ODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMTo1MS40NDU3MDU0ODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjc0NTg5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WS01TXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMi1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjM6Y29uZmlnIERSTV9WS01TXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIEtNUyAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMTgtXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoxOTpjb25maWcgRFJNX1ZLTVNfS1VOSVRfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBWS01TXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjUzLjA3MzE3MDc2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg3MjI3ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYERSTV9WR0VNYC4gR290dGEgY2hlY2sgdGhhdCBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IHN0YXRlLiBXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJyb2FkZXIgcGljdHVyZT8gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IExldCdzIGZpZ3VyZSBvdXQgd2hhdCdzIHJlbGV2YW50IGFuZCBob3cgaXQgY291bGQgaW5mbHVlbmNlIHRoZSBzaXR1YXRpb24uIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTE6NTguMjYwNDAxMDA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc4NjE4MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fVkdFTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZzoyOmNvbmZpZyBEUk1fVkdFTVxcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBHRU0gcHJvdmlkZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjExOjU5LjgzOTAyNDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0MjIwMDQxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERSTSBWYmxhbmsgV2FpdGluZyBMb2dpYyBDaGFuZ2VzKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBkZWVwIGluIHRoZSBjb3JlIERSTSBzdWJzeXN0ZW0g4oCTIGNoYW5nZXMgdG8gaG93IGl0IGhhbmRsZXMgVkJMQU5LIHdhaXRpbmcuIFRoYXQgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24gYmVjYXVzZSB0aG9zZSBraW5kcyBvZiBjaGFuZ2VzIGFyZSBvZnRlbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggaW9jdGxzLiBXZSdyZSB0YWxraW5nIHN0dWZmIGxpa2UgYERSTV9JT0NUTF9XQUlUX1ZCTEFOS2AsIG9yIGV2ZW4gdGhlIG9sZGVyIGZiZGV2IGlvY3Rscy5cblxuTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBlbnRyeSBwb2ludHMgdG8gdGhpcyBuZXcgbG9naWMuXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBzb21ldGhpbmcuLi4gSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgaXMgc3RhdGljIG9yIGlmIGl0J3MgZXhwb3J0ZWQuIEFscmlnaHQsIGl0J3MgKm5vdCogc3RhdGljLCBhbmQgaXQncyBkZWNsYXJlZCBpbiBgZHJtX2ludGVybmFsLmhgLiBTbyBpdCdzIGludGVybmFsIHRvIERSTSwgYnV0ICpub3QqIHN0YXRpYy4gV2UgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSBpdCBmb3IgZm9jdXMgaW4gdGhlIGZ1enppbmcuXG5cbkxldCdzIHByZXBhcmUgdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi5cblxuV29ydGhGdXp6aW5nOiBZZXMsIGRlZmluaXRlbHkuIFRoZXNlIGFyZSBjb3JlIERSTSBmdW5jdGlvbnMsIGFuZCBWQkxBTksgd2FpdGluZyBpcyBjcml0aWNhbC5cblxuRm9jdXNTeW1ib2xzOlxuLSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Bcbi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2Bcbi0gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGBcblxuRW5hYmxlQ29uZmlnczpcbi0gRFJNOiBPYnZpb3VzbHksIHdlIG5lZWQgdGhlIGNvcmUgRFJNIGRyaXZlciBlbmFibGVkLlxuLSBEUk1fRkJERVZfRU1VTEFUSU9OOiBXZSBuZWVkIHRoZSBmYmRldiBlbXVsYXRpb24sIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gZmJkZXYgaW9jdGxzLlxuLSBEUk1fVktNUzogVGhlIFZLTVMgdmlydHVhbCBkcml2ZXIgaXMgaW1wb3J0YW50LiBXZSBjYW4gdGVzdCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiBUaGlzIHBhdGNoIGlzIHJld29ya2luZyB0aGUgVkJMQU5LIHdhaXRpbmcgbG9naWMsIHNwZWNpZmljYWxseSBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBUaGlzIGlzIGFsbCB0byBwcmV2ZW50IHRoZSBkcmVhZGVkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluc2lkZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGggRFJNIGFuZCBmYmRldiBpb2N0bHMgbGlrZSBgRkJJT1BBTl9ESVNQTEFZYCBhbmQgYEZCSU9fV0FJVEZPUlZTWU5DYCwgdmlydHVhbCBkcml2ZXJzIGxpa2UgVktNUyB3aWxsIGFsc28gYmUgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcyBhbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGR1cmluZyB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA1LCJPdXRwdXRUb2tlbnMiOjIwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMjoxNy4yNjEwMzE1NzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk0ODgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gICAgXCJEUk1fVktNU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBEUk0gdmJsYW5rIHdhaXRpbmcgbG9naWMsIGV4dHJhY3RpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgZG91YmxlIGBkcm1fdmJsYW5rX2dldGAgY2FsbHMgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgRFJNIGFuZCBmYmRldiBpb2N0bHMgKGUuZy4sIGBGQklPUEFOX0RJU1BMQVlgLCBgRkJJT19XQUlURk9SVlNZTkNgKSBhbmQgYXJlIGV4ZWN1dGVkIGJ5IHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgRFJNIHZibGFuayB3YWl0aW5nIGxvZ2ljLCBleHRyYWN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIGRvdWJsZSBgZHJtX3ZibGFua19nZXRgIGNhbGxzIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIERSTSBhbmQgZmJkZXYgaW9jdGxzIChlLmcuLCBgRkJJT1BBTl9ESVNQTEFZYCwgYEZCSU9fV0FJVEZPUlZTWU5DYCkgYW5kIGFyZSBleGVjdXRlZCBieSB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTI6MTcuMzQwOTg3MzA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0NTIyMDk3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEwOjEyOjE3LjM0MTYxNTgyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM0NDU4OTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHZibGFuayB3YWl0aW5nIGxvZ2ljIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiwgcmVmZXJlbmNlIGNvdW50aW5nLCBvciB0aW1lb3V0cywgd2hpY2ggYXJlIG5vdCBpbiB0aGUgc2NvcGUgb2YgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTY0YTdkMTViZjI4MWQyMDkyNWU1NzIwNWJkYTY3N2VlNDg2MjgyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDEwOjExOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaVxuIFx0ICovXG4gXHRyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpO1xuIFx0aWYgKCFyZXQpIHtcbi1cdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKGNydGMpO1xuK1x0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG4gXHRcdGRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5pbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKTtcbiBcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fdmJsYW5rX2ZsdXNoX3dvcmtlcihzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbmluZGV4IGY5MGZiMmQxM2U0MjMuLjljYWM3MDEzYjRjOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5AQCAtMTI5Nyw2ICsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7XG4gXG4rLyoqXG4rICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuKyAqIEBjcnRjOiBEUk0gY3J0Y1xuKyAqXG4rICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuKyAqIEV2ZXJ5IGNhbGxlciBtdXN0IGhvbGQgYSB2YmxhbmsgcmVmZXJlbmNlIGFjcm9zcyB0aGUgY29tcGxldGUgd2FpdC5cbisgKlxuKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4rICovXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4re1xuK1x0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXHUwMDNlZGV2O1xuK1x0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcbitcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuK1x0aW50IHJldDtcbitcdHU2NCBsYXN0O1xuK1xuK1x0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcbitcbitcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4rXHRcdFx0XHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXG4rXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7XG4rfVxuK1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIHtcbiBcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiBcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4tXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbiBcdGludCByZXQ7XG4tXHR1NjQgbGFzdDtcbiBcbiBcdHJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7XG4gXHRpZiAoZHJtX1dBUk4oZGV2LCByZXQsIFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxuXCIsXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1x0cmV0ID0gZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFxuLVx0ZHJtX1dBUk4oZGV2LCByZXQgPT0gMCwgXCJ2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwiLCBwaXBlKTtcbitcdGRybV9XQVJOKGRldiwgcmV0ID09IC1FVElNRURPVVQsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTA6MTI6MTcuMzQxNjE3MDk2WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzQ0NTY3OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IFJlZmFjdG9yaW5nIFZibGFuayBXYWl0IExvZ2ljKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvciwgbW9zdGx5IHRvdWNoaW5nIHRoZSB2Ymxhbmsgd2FpdGluZyBtZWNoYW5pc20gd2l0aGluIHRoZSBEUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHNob3VsZCBiZSBLTVNBTi1zYWZlLCBidXQgbGV0J3MgYnJlYWsgaXQgZG93biB0byBiZSBzdXJlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHB1bGxpbmcgb3V0IHRoZSBhY3R1YWwgd2FpdGluZyBsb2dpYyBpbnRvIGEgbmV3IGludGVybmFsIGZ1bmN0aW9uLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYC4gTG9va2luZyBhdCB0aGF0IHNuaXBwZXQgb2YgY29kZSwgaXQncyBwcmV0dHkgc3RhbmRhcmQ6IGl0IGdyYWJzIHRoZSBjdXJyZW50IHZibGFuayBjb3VudCwgdGhlbiB3YWl0cywgd2l0aCBhIHRpbWVvdXQsIGZvciB0aGF0IGNvdW50IHRvIGNoYW5nZS4gVGhlIGB3YWl0X2V2ZW50X3RpbWVvdXRgIGNhbGwgaXMgdGhlIGtleSBwaWVjZSB0aGVyZSwgYmxvY2tpbmcgdW50aWwgdGhlIHZibGFuayBjb3VudCBoYXMgaW5jcmVtZW50ZWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJlcy4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc3RhbmRhcmQga2VybmVsLXN0eWxlIGludGVycHJldGF0aW9uIG9mIHN1Y2Nlc3Mgb3IgdGltZW91dC5cblxuVGhlIHJhdGlvbmFsZSBzZWVtcyB0byBiZSBhYm91dCByZWZlcmVuY2UgY291bnRpbmcuIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSB2Ymxhbmsgb2JqZWN0IHZpYSBgZHJtX2NydGNfdmJsYW5rX2dldGAuIENhbGxpbmcgdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHdvdWxkIHJlc3VsdCBpbiBhbiB1bm5lY2Vzc2FyeSBhZGRpdGlvbmFsIGdldC9wdXQuIFRoaXMgcmVmYWN0b3JpbmcsIGFuZCB0aGUgdXNlIG9mIHRoZSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24sIGF2b2lkcyB0aGF0IHJlZHVuZGFudCBnZXQvcHV0LiBTZWVtcyBzZW5zaWJsZS5cblxuU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGZvciBLTVNBTiBpczogYXJlIHRoZXJlIGFueSBuZXcgcG90ZW50aWFsIHNvdXJjZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLiBUaGlzIHBhdGNoIHN0cmljdGx5IHJlYXJyYW5nZXMgKmV4aXN0aW5nKiBsb2dpYy4gSSdtIHNlZWluZyBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGludHJvZHVjZWQsIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVzZXItc3BhY2UgY29waWVzIHdoZXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbnRlbnRzLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBhbmQgdGhlIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50LlxuXG5UaGUgS01TQU4gaW1wbGljYXRpb25zIGFyZSBiYXNpY2FsbHkgemVyby4gVGhpcyBpcyBmb2N1c2VkIG9uIGNvbmN1cnJlbmN5IGFuZCByZWZlcmVuY2UgY291bnRpbmcsIHdoaWNoIGFyZW4ndCBpbiB0aGUgc2NvcGUgb2Ygd2hhdCBLTVNBTiBpcyBsb29raW5nIGZvci4gVGhpcyBwYXRjaCBjYW4gYmUgY29uZmlkZW50bHkgbWFya2VkIGFzIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MCwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMDoxMjoyNy42ODYxODgzNTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB2Ymxhbmsgd2FpdGluZyBsb2dpYyBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24sIHJlZmVyZW5jZSBjb3VudGluZywgb3IgdGltZW91dHMsIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNjb3BlIG9mIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowplkr7[1] Phase: Succeeded StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 10:12:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 10:12:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2] Phase: Succeeded StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 10:12:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 10:12:38 +0000 UTC FinishedAt: 2026-08-12 10:12:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowplkr7/series-workflowplkr7-convert-artifact-2786133000/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 10:12:48 +0000 UTC FinishedAt: 2026-08-12 10:32:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 10:12:48 +0000 UTC FinishedAt: 2026-08-12 10:32:24 +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:*4a5c5332-5fab-4b8a-b35b-8d4742ba95b8,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-workflowplkr7/series-workflowplkr7-convert-artifact-2786133000/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": "7c559c3f-265a-4662-8840-2237f54819ea", "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-workflowplkr7/series-workflowplkr7-build-action-1249566334/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 10:12:48 +0000 UTC FinishedAt: 2026-08-12 10:32:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4a5c5332-5fab-4b8a-b35b-8d4742ba95b8,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-workflowplkr7/series-workflowplkr7-convert-artifact-2786133000/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": "7c559c3f-265a-4662-8840-2237f54819ea", "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-workflowplkr7/series-workflowplkr7-build-action-1249566334/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 10:32:24 +0000 UTC FinishedAt: 2026-08-12 10:32:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-12 10:32:24 +0000 UTC FinishedAt: 2026-08-12 10:32:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 10:32:24 +0000 UTC FinishedAt: 2026-08-12 10:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-12 10:32:24 +0000 UTC FinishedAt: 2026-08-12 10:32:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowplkr7/series-workflowplkr7-convert-artifact-3891439/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 10:32:35 +0000 UTC FinishedAt: 2026-08-12 10:34:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-12 10:32:35 +0000 UTC FinishedAt: 2026-08-12 10:34:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c559c3f-265a-4662-8840-2237f54819ea,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-workflowplkr7/series-workflowplkr7-build-action-1249566334/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-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 10:34:38 +0000 UTC FinishedAt: 2026-08-12 10:34:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-12 10:34:38 +0000 UTC FinishedAt: 2026-08-12 10:34:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 10:34:38 +0000 UTC FinishedAt: 2026-08-12 10:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-12 10:34:38 +0000 UTC FinishedAt: 2026-08-12 10:54:05 +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:*4a5c5332-5fab-4b8a-b35b-8d4742ba95b8,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-workflowplkr7/series-workflowplkr7-convert-artifact-3891439/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": "59a43ec4-bf4d-4628-9b44-1272de70de80", "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-workflowplkr7/series-workflowplkr7-build-action-1297798275/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-12 10:34:38 +0000 UTC FinishedAt: 2026-08-12 10:53:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4a5c5332-5fab-4b8a-b35b-8d4742ba95b8,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-workflowplkr7/series-workflowplkr7-convert-artifact-3891439/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": "59a43ec4-bf4d-4628-9b44-1272de70de80", "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-workflowplkr7/series-workflowplkr7-build-action-1297798275/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-12 10:54:05 +0000 UTC FinishedAt: 2026-08-12 10:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-12 10:54:05 +0000 UTC FinishedAt: 2026-08-12 10:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 10:54:05 +0000 UTC FinishedAt: 2026-08-12 10:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-12 10:54:05 +0000 UTC FinishedAt: 2026-08-12 10:56:16 +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:*59a43ec4-bf4d-4628-9b44-1272de70de80,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-workflowplkr7/series-workflowplkr7-build-action-1297798275/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-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +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":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"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:*7c559c3f-265a-4662-8840-2237f54819ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*59a43ec4-bf4d-4628-9b44-1272de70de80,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-workflowplkr7/series-workflowplkr7-build-action-1249566334/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-workflowplkr7/series-workflowplkr7-build-action-1297798275/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 10:56:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 10:56:41 +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":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"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-workflowplkr7/series-workflowplkr7-convert-artifact-1650298536/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 10:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 10:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-12 10:56:26 +0000 UTC FinishedAt: 2026-08-12 10:56:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-12 10:56:46 +0000 UTC FinishedAt: 2026-08-12 14:04:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplkr7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS"],"series_id":"c8176a1e-a31a-4266-8d34-972b2683dbf4","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-12 10:56:46 +0000 UTC FinishedAt: 2026-08-12 14:03:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c559c3f-265a-4662-8840-2237f54819ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*59a43ec4-bf4d-4628-9b44-1272de70de80,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-workflowplkr7/series-workflowplkr7-build-action-1249566334/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-workflowplkr7/series-workflowplkr7-build-action-1297798275/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-workflowplkr7/series-workflowplkr7-convert-artifact-1650298536/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,}