Name: series-workflowh68t8 Phase: Succeeded StartedAt: 2026-07-31 04:23:27 +0000 UTC FinishedAt: 2026-07-31 08:29:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[0] Phase: Succeeded StartedAt: 2026-07-31 04:23:27 +0000 UTC FinishedAt: 2026-07-31 04:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 04:23:27 +0000 UTC FinishedAt: 2026-07-31 04:43:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "b93ac873-e55b-4063-bf3f-14a113981586" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_validate", "macvlan_common_newlink", "macvlan_changelink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjgyNmU4MjIzYTRmMjJjODE3MGMwYmY0NjM3NzJkMzEwMWQxMDI5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA0OjQyOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtMTMzNSw2ICYjNDM7MTMzNSwxNSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuIFx0aWYgKCFkYXRhKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXHUwMDNlXG4mIzQzO1x0XHRcdE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU4gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7YmNfcXVldWVfbGVuIGFib3ZlIHRoZSBkZWZhdWx0IHJlcXVpcmVzIENBUF9ORVRfQURNSU4gaW4gdGhlIGluaXRpYWwgdXNlciBuYW1lc3BhY2VcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FUEVSTTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFx1MDAyNiB+KE1BQ1ZMQU5fRkxBR19OT1BST01JU0MgfFxuIFx0XHRcdFx0XHRcdCAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjgyNmU4MjIzYTRmMjJjODE3MGMwYmY0NjM3NzJkMzEwMWQxMDI5MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA0OjQyOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCmluZGV4IGM0MGZhMzMxODM2YmIuLmZjOTU2NTRhYmNhOGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKQEAgLTEzMzUsNiAmIzQzOzEzMzUsMTUgQEAgc3RhdGljIGludCBtYWN2bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSwKIAlpZiAoIWRhdGEpCiAJCXJldHVybiAwOwogCiYjNDM7CWlmIChkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dICZhbXA7JmFtcDsKJiM0MzsJICAgIG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pICZndDsKJiM0MzsJCQlNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOICZhbXA7JmFtcDsKJiM0MzsJICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSwKJiM0MzsJCQkJICAgICYjMzQ7YmNfcXVldWVfbGVuIGFib3ZlIHRoZSBkZWZhdWx0IHJlcXVpcmVzIENBUF9ORVRfQURNSU4gaW4gdGhlIGluaXRpYWwgdXNlciBuYW1lc3BhY2UmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwl9CiYjNDM7CiAJaWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSAmYW1wOyZhbXA7CiAJICAgIG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSkgJmFtcDsgfihNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDIHwKIAkJCQkJCSAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjdmxhbiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTttIHNlZWluZyBoZXJlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIHZhbGlkYXRpb24gc3RlcCB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbiBpbiB0aGUgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AgZmlsZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBuZXRsaW5rIHZhbGlkYXRpb24gbG9naWMgZW5oYW5jZW1lbnQuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIGludm9sdmVzIGNoZWNraW5nIHRoZSB2YWx1ZSBvZiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgbm93IHZlcmlmaWVzIHdoZXRoZXIgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIGEgdmFsdWUgZXhjZWVkaW5nIGBNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOYCBhbmQsIGNyaXRpY2FsbHksIGlmIHRoZSB1c2VyIGF0dGVtcHRpbmcgdGhpcyBtb2RpZmljYXRpb24gKmxhY2tzKiB0aGUgYENBUF9ORVRfQURNSU5gIGNhcGFiaWxpdHkuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IOKAkyBhIGhpZ2ggcXVldWUgbGVuZ3RoIGFuZCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyDigJMgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGAtRVBFUk1gLCB3aGljaCBpcyBhIHBlcm1pc3Npb24gZGVuaWVkIGVycm9yLgoKU28sIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgbWFjdmxhbiBkcml2ZXIsIGFuZCBpdOKAmXMgYWNjZXNzZWQgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgYSBtYWN2bGFuIGludGVyZmFjZSB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGFzcGVjdCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZC4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIHdpbGwgYmUgY29tcGlsZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHNlY3VyaXR5IGhhcmRlbmluZyBtZWFzdXJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgbWFsaWNpb3VzIHF1ZXVlIGxlbmd0aCBzZXR0aW5ncyBmcm9tIHVucHJpdmlsZWdlZCB1c2Vycy4gVGhpcyBpcyBhIGdvb2QsIHRhcmdldGVkIGNoYW5nZSB0aGF0IHN0cmVuZ3RoZW5zIHNlY3VyaXR5IGZvciBtYWN2bGFuIGludGVyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19BTVQpICYjNDM7PSBhbXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX01BQ1ZMQU4pICYjNDM7PSBtYWN2bGFuLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19NQUNWVEFQKSAmIzQzOz0gbWFjdnRhcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTUFDVkxBTiBDb25maWd1cmF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBNQUNWTEFOYCBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhhdCB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNlbnRyYWwgZm9jdXMuIEhvbGQgb24gYSBzZWNvbmQsIGxvb2tzIGxpa2UgdGhlIGNvcmUgdmFsaWRhdGlvbiBsb2dpYyBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmVzaWRlcyB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbi4gT2theSwgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBvaW50cyBvciBob29rcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gbWFjdmxhbl92YWxpZGF0ZSBpbiBkcml2ZXJzL25ldC9tYWN2bGFuLmMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE1BQ1ZMQU4gdmFsaWRhdGlvbiB3b3Jrcy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdGhlIGNvcmUgbG9naWMgZm9yIGVuc3VyaW5nIHRoYXQgTUFDVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgc291bmQgdG8gcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBpdCB0YWtlcyBhbmQgd2hhdCBpdCYjMzk7cyBjaGVja2luZyBmb3Ig4oCTIHRoaW5ncyBsaWtlIGNvbmZsaWN0aW5nIE1BQyBhZGRyZXNzZXMsIFZMQU4gSUQgYXNzaWdubWVudHMsIGFuZCB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSBpcyBpbiBhIHZhbGlkIHN0YXRlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIHF1aWNrbHkgc2tpbSB0aHJvdWdoIGFueSBjYWxsaW5nIGZ1bmN0aW9ucyB0byBzZWUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyB2YWxpZGF0aW9uIG9jY3Vycy4gSXMgaXQgZHVyaW5nIGludGVyZmFjZSBjcmVhdGlvbiwgY29uZmlndXJhdGlvbiB1cGRhdGVzLCBvciBib3RoPyBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgY3JpdGljYWwgdGhpcyB2YWxpZGF0aW9uIHRydWx5IGlzIGFuZCB3aGF0IHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIEkgbmVlZCB0byBsb29rIGZvci4gVWx0aW1hdGVseSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBhIGtleSBwaWVjZSBpbiBlbnN1cmluZyB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0IG9wZXJhdGlvbiBvZiBNQUNWTEFOIHZpcnR1YWwgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg1PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEzMjEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMjpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEzMjMtXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc3Mj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NzQtXHQvKiBjb21tb24gZmllbGRzICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc3NTpcdG9wcy1cdTAwM2V2YWxpZGF0ZVx0XHQ9IG1hY3ZsYW5fdmFsaWRhdGU7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3Ni1cdG9wcy1cdTAwM2VtYXh0eXBlXHRcdD0gSUZMQV9NQUNWTEFOX01BWDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBEcml2ZXIgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoYXQgYG1hY3ZsYW5fdmFsaWRhdGVgIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBidXQgaXQmIzM5O3MgZ2V0dGluZyBhc3NpZ25lZCB0byB0aGUgYG9wcy0mZ3Q7dmFsaWRhdGVgIG1lbWJlci4gSG1tLCB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzICpwYXJ0KiBvZiBhIGxhcmdlciwgbW9yZSBjb21wcmVoZW5zaXZlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlICYjMzQ7cmVhbCYjMzQ7IGVudHJ5IHBvaW50IGlzIOKAkyB0aGUgbm9uLXN0YXRpYyBvbmUuIElzIHRoZXJlIGEgdG9wLWxldmVsIGZ1bmN0aW9uIEkmIzM5O20gbWlzc2luZz8KCkkgaW5pdGlhbGx5IHRob3VnaHQgdGhhdCBgbWFjdmxhbl9saW5rX3JlZ2lzdGVyYCB3YXMgdGhlIGVudHJ5IHBvaW50IGJlY2F1c2Ugb2YgdGhlIG5hbWUsIGJ1dCBubywgdGhhdCByZWdpc3RlcnMgYHJ0bmxfbGlua19vcHNgLiBPa2F5LCBzbyBpdCYjMzk7cyBhIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiwgbm90IHRoZSBkcml2ZXImIzM5O3Mgc3RhcnRpbmcgcG9pbnQuCgpBaCwgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgYG1hY3ZsYW5fbmV3bGlua2AgbWVudGlvbmVkLiBBbmQgYWxzbyBgbWFjdmxhbl9jaGFuZ2VsaW5rYC4gVGhvc2Ugc291bmQgcHJvbWlzaW5nLiBNeSBndXQgc2F5cyBJIG5lZWQgdG8gZGlnIGludG8gdGhvc2UgdHdvIGZ1bmN0aW9ucyBub3cuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIGF0IHRoZSBtb21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OT1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAwLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MDE6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAyLVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3OTE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3OTMtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3OTQ6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5NS1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBhc3N1bXB0aW9uIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBNYWN2bGFuIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtYWN2bGFuX25ld2xpbmtgIGZ1bmN0aW9uIGFnYWluLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3MgYSBxdWVzdGlvbi4gV2h5IGlzIGl0IHN0YXRpYz8gU2hvdWxkbiYjMzk7dCBhIGNvcmUgZnVuY3Rpb24gbGlrZSB0aGF0IGJlIG1vcmUgYWNjZXNzaWJsZSwgcG90ZW50aWFsbHkgcmV1c2FibGUgYWNyb3NzIGRpZmZlcmVudCBtb2R1bGVzIG9yIGRyaXZlcnM/IE9yIGlzIGl0IGRlbGliZXJhdGVseSBoaWRkZW4gZm9yIGEgc3BlY2lmaWMgcmVhc29uIHdpdGhpbiB0aGUgbWFjdmxhbiBpbXBsZW1lbnRhdGlvbj8gQW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGFuZCBmb2xsb3cgdXAuCgpUaGUgc3RhdGljIGRlY2xhcmF0aW9uIG9mIGBtYWN2bGFuX25ld2xpbmtgIHRocm93cyBhIGxpZ2h0IG9uIGl0cyBpbnRpbWF0ZSBjb25uZWN0aW9uIHRvIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSBiYXNlLiBJIHNob3VsZCBrZWVwIGl0IGluIG1pbmQuCgpUaGVuLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50LiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCwgc28gSSBiZXR0ZXIgZXhwYW5kIG15IHNlYXJjaC4gTXkgbWluZCBub3cgdHVybnMgdG8gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJcyB0aGF0IHBhcnQgb2YgaXQ/IFdoZXJlIGRvZXMgKnRoYXQqIGZpdCBpbnRvIHRoZSBwaWN0dXJlPyBEb2VzIHRoYXQgaGFuZGxlIGNvbW1vbiBzZXR1cCBvciBlcnJvciBoYW5kbGluZyBiZWZvcmUgdGhlIG1vcmUgc3BlY2lmaWMgcGFydCBvZiBtYWN2bGFuIHNldHVwPyBJdCBzb3VuZHMgbGlrZSB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0IG1pZ2h0IGJlIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHRoZSBpbml0aWFsIGdlbmVyaWMgc2V0dXAsIG9yIHBlcmhhcHMgd2l0aCB0aGUgaW5pdGlhbCBhbGxvY2F0aW9uIG9yIGNvbW1vbiBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSB0byB1bmRlcnN0YW5kIHRoZSByb2xlcyBvZiB0aG9zZSB0d28gcm91dGluZXMsIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGNsYXJpZnkgdGhlIG92ZXJhbGwgZGVzaWduLCBob3cgbWFjdmxhbnMgYXJlIGFjdHVhbGx5IGJyb3VnaHQgb25saW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDExPXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2Ni1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY3OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2OC1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk4LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTk5OkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYwMT1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjA0LXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjA1Olx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1hY1ZMQU4gRnVuY3Rpb24gQ2FsbHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gQnV0IHRoZSBjb3JlIGxvZ2ljIHNlZW1zIHRvIGJlIGluIGBtYWN2bGFuX3ZhbGlkYXRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3aGV0aGVyIGBtYWN2bGFuX3ZhbGlkYXRlYCBnZXRzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBJJiMzOTt2ZSBnb3QgdG8gcmVtZW1iZXIgdGhlIFJUTkwgcHJvY2Vzcy4uLiByaWdodCwgYHZhbGlkYXRlYCBpcyBjYWxsZWQgYnkgcnRuZXRsaW5rICpiZWZvcmUqIGVpdGhlciBgbmV3bGlua2Agb3IgYGNoYW5nZWxpbmtgLiBTbywgYHJ0bmxfbmV3bGlua2Agb3IgYHJ0bmxfc2V0bGlua2AgaXMgdXNpbmcgdGhhdCBgb3BzLSZndDt2YWxpZGF0ZWAgZnVuY3Rpb24gcG9pbnRlci4KClNpbmNlIGBtYWN2bGFuX3ZhbGlkYXRlYCBpcyAqc3RhdGljKiwgSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGFib3V0IGp1c3QgZm9jdXNpbmcgb24gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhcyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLiBCdXQgd2FpdC4uLiBgbWFjdmxhbl92YWxpZGF0ZWAgKmlzKiBzdGF0aWMsIHlldCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgb3BzLSZndDt2YWxpZGF0ZWAuIE5vdyB0aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIHRoYXQgbWVhbnMgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBgbWFjdmxhbl92YWxpZGF0ZWAgaWYgaXQmIzM5O3Mgbm90IGlubGluZWQuIEx1Y2tpbHksIGl0IGlzbiYjMzk7dCwgc28gaXQmIzM5O3MgYWRkcmVzc2FibGUuCgpIb3dldmVyLCB0aGUgcHJvbXB0IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLi4uIFNvLCB0byBiZSAqYWJzb2x1dGVseSogc2FmZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaW4gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QgYXMgd2VsbC4gIExldCYjMzk7cyBhZGQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gdGhlIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMj1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDEwLSAqL1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MTE6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MTItXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Njc9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0OS1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NTA6XHRcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIwLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MjE6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIyLVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY3NC1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2NzU6XHRcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NzYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NzI9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc3LVx0b3BzLVx1MDAzZXBvbGljeVx0XHQ9IG1hY3ZsYW5fcG9saWN5O1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Nzg6XHRvcHMtXHUwMDNlY2hhbmdlbGlua1x0XHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc5LVx0b3BzLVx1MDAzZWdldF9zaXplXHRcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTWFjdmxhbiBNb2R1bGUgRGVlcCBEaXZlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBhcmNoaXRlY3R1cmUgaGVyZSBpcyBzdGFydGluZyB0byBzb2xpZGlmeS4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBpcyBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWxlIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBnZXRzIGV4cG9ydGVkLiBTZWVtcyBsb2dpY2FsLiBJIHNob3VsZCBhZGQgYm90aCBvZiB0aG9zZSwgYWxvbmcgd2l0aCBgbWFjdmxhbl92YWxpZGF0ZWAsIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdheSwgSSYjMzk7bGwgaGF2ZSBhbGwgdGhlIGtleSBidWlsZGluZyBibG9ja3MgcmlnaHQgYXQgbXkgZmluZ2VydGlwcy4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFRoZSBwcmltYXJ5IGRyaXZlciwgb2YgY291cnNlLCBpcyBgQ09ORklHX01BQ1ZMQU5gLiBJIG5lZWQgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwIHRoYXQgSSBzaG91bGRuJiMzOTt0IG92ZXJsb29rLiBMZXQgbWUgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGNhcmVmdWxseSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gaGlkZGVuIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNQUNWTEFOIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgTUFDVkxBTmAgc2l0dWF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEZvcmdldCBqdW1waW5nIGludG8gdGhlIHdlZWRzIHdpdGggY29kZSBqdXN0IHlldDsgSSBuZWVkIGEgaGlnaC1sZXZlbCB2aWV3LiBXaGF0IG90aGVyIG5ldHdvcmtpbmcgY29uc3RydWN0cyBpcyBpdCBidWlsdCBvbj8gT2J2aW91c2x5LCBpdCBsZXZlcmFnZXMgdGhlIGV4aXN0aW5nIExpbnV4IG5ldHdvcmtpbmcgc3RhY2ssIHNvIEkga25vdyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgbmV0bGlua2AgY2FsbHMsIGxpa2VseSB0aWVkIHRvIGBicmlkZ2VgIGNvbmZpZ3VyYXRpb25zICh0aG91Z2ggcG90ZW50aWFsbHkgYnlwYXNzaW5nIGEgYnJpZGdlIGFsdG9nZXRoZXIpLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBkaWZmZXJlbnQgbW9kZXMg4oCTIGBicmlkZ2VgLCBgcHJpdmF0ZWAsIGB2ZXBhYCwgZXRjLiAtIGFuZCBob3cgZWFjaCBhZmZlY3RzIHRoZSBwYXJlbnQgaW50ZXJmYWNlIGludGVyYWN0aW9uLiBUaGVuLCB0aGVyZSYjMzk7cyB0aGUgd2hvbGUgbGF5ZXItMiBhc3BlY3Q7IEkgbmVlZCB0byBjb25zaWRlciBob3cgQVJQIHJlc29sdXRpb24gYW5kIE1BQyBhZGRyZXNzIGxlYXJuaW5nIHBsYXkgaW50byB0aGUgcGljdHVyZS4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZSBsaW1pdGF0aW9ucyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgcmVsYXRlZCB0byB0aGUgdW5kZXJseWluZyBOSUMgZHJpdmVyIG9yIHRoZSBzd2l0Y2gmIzM5O3MgZm9yd2FyZGluZyB0YWJsZXMsIGVzcGVjaWFsbHkgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBgTUFDVkxBTmAgaW50ZXJmYWNlcz8gSXMgdGhlcmUga2VybmVsIG1vZHVsZSBpbnRlcmFjdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIHdpdGggcHJvbWlzY3VvdXMgbW9kZT8gUmlnaHQsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoYXQgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGFsbCBjb25uZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRjb25maWcgTUFDVkxBTlxuIDE2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDE2NzpcdFx0aGVscFxuIDE2ODpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IG1hcCBwYWNrZXRzIHRvXG4gMTY5Olx0XHQgIG9yIGZyb20gc3BlY2lmaWMgTUFDIGFkZHJlc3NlcyB0byBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLlxuIDE3MDpcdFxuIDE3MTpcdFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMTcyOlx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMi42LjIzIHJlbGVhc2U6XG4gMTczOlx0XG4gMTc0Olx0XHQgIFwmIzM0O2lwIGxpbmsgYWRkIGxpbmsgXHUwMDNjcmVhbCBkZXZcdTAwM2UgWyBhZGRyZXNzIE1BQyBdIFsgTkFNRSBdIHR5cGUgbWFjdmxhblwmIzM0O1xuIDE3NTpcdFxuIDE3NjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTc3Olx0XHQgIHdpbGwgYmUgY2FsbGVkIG1hY3ZsYW4uXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIE1BQ1ZUQVBcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbiAxODE6XHRcdGRlcGVuZHMgb24gTUFDVkxBTlxuIDE4MjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMTgzOlx0XHRzZWxlY3QgVEFQXG4gMTg0Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ1ZMQU4gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBgTUFDVkxBTmAgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBnb29kIG5ld3MgaXMsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGBNQUNWTEFOYCBpdHNlbGYgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gVGhhdCBtYWtlcyB0aGluZ3MgY2xlYW5lciDigJMgaXQmIzM5O3MgYWxsIHNlbGYtY29udGFpbmVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIGp1c3QgYE1BQ1ZMQU5gLgoKTm93LCBkaWdnaW5nIGRlZXBlciwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIG1vZGlmaWVkIGlzIHNvbGVseSBgbWFjdmxhbl92YWxpZGF0ZWAuIEFscmlnaHQsIHRoaXMgaXMgYSBwdXJlbHkgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBwZXJtaXNzaW9uIGNoZWNrLiBUaGF0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IGBXb3J0aEZ1enppbmdgLCBsZXQmIzM5O3MgZ2V0IHRoYXQgbWFya2VkLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byBwdXQgbXkgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG1hY3ZsYW5fdmFsaWRhdGVgLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gZ2l2ZSB0aGUgZnV6emluZyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduIGlzIGBNQUNWTEFOYC4KClVsdGltYXRlbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcGVybWlzc2lvbiBjaGVjayB3aXRoaW4gYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIHRoZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgYXR0cmlidXRlIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyB0aGUgZGVmYXVsdC4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtYWN2bGFuIGRyaXZlciYjMzk7cyBuZXRsaW5rIGludGVyZmFjZS4gU2luY2UgbmV0bGluayBpcyB1c2VyLXNwYWNlIGFjY2Vzc2libGUsIGl0IGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcGVybWlzc2lvbiBjaGVjayB0byBgbWFjdmxhbl92YWxpZGF0ZWAgd2hlbiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgaXMgc2V0IGFib3ZlIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hY3ZsYW4gZHJpdmVyJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgYnkgdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjA3LjA3MzMzNjM4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzMxNDIwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX3ZhbGlkYXRlXCIsXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVybWlzc2lvbiBjaGVjayB0byBgbWFjdmxhbl92YWxpZGF0ZWAgd2hlbiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgaXMgc2V0IGFib3ZlIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hY3ZsYW4gZHJpdmVyJ3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjowNy4wNzMzNDQwMTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTkwMjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI4MjZlODIyM2E0ZjIyYzgxNzBjMGJmNDYzNzcyZDMxMDFkMTAyOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6NDI6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG5AQCAtMTMzNSw2ICsxMzM1LDE1IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuIFxcdGlmICghZGF0YSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbitcXHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXFx1MDAzZVxcbitcXHRcXHRcXHRNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJiY19xdWV1ZV9sZW4gYWJvdmUgdGhlIGRlZmF1bHQgcmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBpbiB0aGUgaW5pdGlhbCB1c2VyIG5hbWVzcGFjZVxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFxcdTAwMjYgfihNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDIHxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgTUFDVkxBTl9GTEFHX05PRFNUKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6MDcuNjM2MjM1MTQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxNjg1MDgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI4MjZlODIyM2E0ZjIyYzgxNzBjMGJmNDYzNzcyZDMxMDFkMTAyOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNDo0MjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtMTMzNSw2ICsxMzM1LDE1IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4gXHRpZiAoIWRhdGEpXG4gXHRcdHJldHVybiAwO1xuIFxuK1x0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gXHUwMDI2XHUwMDI2XG4rXHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXHUwMDNlXG4rXHRcdFx0TUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTiBcdTAwMjZcdTAwMjZcbitcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcbitcdFx0XHRcdCAgICBcImJjX3F1ZXVlX2xlbiBhYm92ZSB0aGUgZGVmYXVsdCByZXF1aXJlcyBDQVBfTkVUX0FETUlOIGluIHRoZSBpbml0aWFsIHVzZXIgbmFtZXNwYWNlXCIpO1xuK1x0XHRyZXR1cm4gLUVQRVJNO1xuK1x0fVxuK1xuIFx0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFx1MDAyNiB+KE1BQ1ZMQU5fRkxBR19OT1BST01JU0MgfFxuIFx0XHRcdFx0XHRcdCAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjowNy42MzYyMzc2NDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDEzMDY3MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIG1hY3ZsYW4gRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJ20gc2VlaW5nIGhlcmUuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgdmFsaWRhdGlvbiBzdGVwIHdpdGhpbiB0aGUgYG1hY3ZsYW5fdmFsaWRhdGVgIGZ1bmN0aW9uIGluIHRoZSBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCBmaWxlLiBJdCdzIGVzc2VudGlhbGx5IGEgbmV0bGluayB2YWxpZGF0aW9uIGxvZ2ljIGVuaGFuY2VtZW50LiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBpbnZvbHZlcyBjaGVja2luZyB0aGUgdmFsdWUgb2YgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIG5vdyB2ZXJpZmllcyB3aGV0aGVyIHRoaXMgcGFyYW1ldGVyIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyBgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTmAgYW5kLCBjcml0aWNhbGx5LCBpZiB0aGUgdXNlciBhdHRlbXB0aW5nIHRoaXMgbW9kaWZpY2F0aW9uICpsYWNrcyogdGhlIGBDQVBfTkVUX0FETUlOYCBjYXBhYmlsaXR5LiBJZiBib3RoIGNvbmRpdGlvbnMgYXJlIG1ldCDigJMgYSBoaWdoIHF1ZXVlIGxlbmd0aCBhbmQgaW5zdWZmaWNpZW50IHByaXZpbGVnZXMg4oCTIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBgLUVQRVJNYCwgd2hpY2ggaXMgYSBwZXJtaXNzaW9uIGRlbmllZCBlcnJvci5cblxuU28sIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgbWFjdmxhbiBkcml2ZXIsIGFuZCBpdOKAmXMgYWNjZXNzZWQgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgYSBtYWN2bGFuIGludGVyZmFjZSB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGFzcGVjdCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZC4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIHdpbGwgYmUgY29tcGlsZWQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgc2VjdXJpdHkgaGFyZGVuaW5nIG1lYXN1cmUgdG8gcHJldmVudCBwb3RlbnRpYWxseSBtYWxpY2lvdXMgcXVldWUgbGVuZ3RoIHNldHRpbmdzIGZyb20gdW5wcml2aWxlZ2VkIHVzZXJzLiBUaGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgY2hhbmdlIHRoYXQgc3RyZW5ndGhlbnMgc2VjdXJpdHkgZm9yIG1hY3ZsYW4gaW50ZXJmYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjEzLjA0OTMwNzcwM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyMzI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQU1UKSArPSBhbXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19NQUNWTEFOKSArPSBtYWN2bGFuLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfTUFDVlRBUCkgKz0gbWFjdnRhcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjEzLjIxOTU0NzE1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTEyMjYwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTUFDVkxBTiBDb25maWd1cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgTUFDVkxBTmAgc2V0dXAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25maXJtIHRoYXQgdGhlIGBNQUNWTEFOYCBjb25maWd1cmF0aW9uIGlzIHRoZSBjZW50cmFsIGZvY3VzLiBIb2xkIG9uIGEgc2Vjb25kLCBsb29rcyBsaWtlIHRoZSBjb3JlIHZhbGlkYXRpb24gbG9naWMgSSdtIGludGVyZXN0ZWQgaW4gcmVzaWRlcyB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbi4gT2theSwgbGV0J3MgdHJhY2UgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG9yIGhvb2tzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6MTYuNjEwNzc1NTY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzU4MTg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjE2LjgwNDM2NDE4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTkzMjQ0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gbWFjdmxhbl92YWxpZGF0ZSBpbiBkcml2ZXJzL25ldC9tYWN2bGFuLmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTUFDVkxBTiB2YWxpZGF0aW9uIHdvcmtzLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IEkgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gYG1hY3ZsYW5fdmFsaWRhdGVgIHdpdGhpbiBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYC4gVGhpcyBpcyB3aGVyZSBJJ2QgZXhwZWN0IHRoZSBjb3JlIGxvZ2ljIGZvciBlbnN1cmluZyB0aGF0IE1BQ1ZMQU4gY29uZmlndXJhdGlvbnMgYXJlIHNvdW5kIHRvIHJlc2lkZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBpdCB0YWtlcyBhbmQgd2hhdCBpdCdzIGNoZWNraW5nIGZvciDigJMgdGhpbmdzIGxpa2UgY29uZmxpY3RpbmcgTUFDIGFkZHJlc3NlcywgVkxBTiBJRCBhc3NpZ25tZW50cywgYW5kIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlIGlzIGluIGEgdmFsaWQgc3RhdGUuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gcXVpY2tseSBza2ltIHRocm91Z2ggYW55IGNhbGxpbmcgZnVuY3Rpb25zIHRvIHNlZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIHZhbGlkYXRpb24gb2NjdXJzLiBJcyBpdCBkdXJpbmcgaW50ZXJmYWNlIGNyZWF0aW9uLCBjb25maWd1cmF0aW9uIHVwZGF0ZXMsIG9yIGJvdGg/IFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyBjcml0aWNhbCB0aGlzIHZhbGlkYXRpb24gdHJ1bHkgaXMgYW5kIHdoYXQgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMgSSBuZWVkIHRvIGxvb2sgZm9yLiBVbHRpbWF0ZWx5LCBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgYSBrZXkgcGllY2UgaW4gZW5zdXJpbmcgdGhlIHN0YWJpbGl0eSBhbmQgY29ycmVjdCBvcGVyYXRpb24gb2YgTUFDVkxBTiB2aXJ0dWFsIGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjoyMC4zMjM2OTE2NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3Mzk1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg1PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMjpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMzIzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc3Mj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3NC1cXHQvKiBjb21tb24gZmllbGRzICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NzU6XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdFxcdD0gbWFjdmxhbl92YWxpZGF0ZTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3Ni1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjIwLjQzMTA5MjIwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzMwMjAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgTWFjdmxhbiBEcml2ZXIgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGF0IGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IGl0J3MgZ2V0dGluZyBhc3NpZ25lZCB0byB0aGUgYG9wcy1cdTAwM2V2YWxpZGF0ZWAgbWVtYmVyLiBIbW0sIHRoYXQgc3VnZ2VzdHMgaXQncyAqcGFydCogb2YgYSBsYXJnZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzdHJ1Y3R1cmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBcInJlYWxcIiBlbnRyeSBwb2ludCBpcyDigJMgdGhlIG5vbi1zdGF0aWMgb25lLiBJcyB0aGVyZSBhIHRvcC1sZXZlbCBmdW5jdGlvbiBJJ20gbWlzc2luZz9cblxuSSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIHdhcyB0aGUgZW50cnkgcG9pbnQgYmVjYXVzZSBvZiB0aGUgbmFtZSwgYnV0IG5vLCB0aGF0IHJlZ2lzdGVycyBgcnRubF9saW5rX29wc2AuIE9rYXksIHNvIGl0J3MgYSByZWdpc3RyYXRpb24gZnVuY3Rpb24sIG5vdCB0aGUgZHJpdmVyJ3Mgc3RhcnRpbmcgcG9pbnQuXG5cbkFoLCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbWFjdmxhbl9uZXdsaW5rYCBtZW50aW9uZWQuIEFuZCBhbHNvIGBtYWN2bGFuX2NoYW5nZWxpbmtgLiBUaG9zZSBzb3VuZCBwcm9taXNpbmcuIE15IGd1dCBzYXlzIEkgbmVlZCB0byBkaWcgaW50byB0aG9zZSB0d28gZnVuY3Rpb25zIG5vdy4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiBhdCB0aGUgbW9tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjI3LjM2NDExNjI3N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NzU0Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MDE6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwMi1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3OTE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5My1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3OTQ6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5NS1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjoyNy41NTg5MzM5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NzczNzgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBhc3N1bXB0aW9uIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTWFjdmxhbiBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG1hY3ZsYW5fbmV3bGlua2AgZnVuY3Rpb24gYWdhaW4uIEl0J3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgc3BhcmtzIGEgcXVlc3Rpb24uIFdoeSBpcyBpdCBzdGF0aWM/IFNob3VsZG4ndCBhIGNvcmUgZnVuY3Rpb24gbGlrZSB0aGF0IGJlIG1vcmUgYWNjZXNzaWJsZSwgcG90ZW50aWFsbHkgcmV1c2FibGUgYWNyb3NzIGRpZmZlcmVudCBtb2R1bGVzIG9yIGRyaXZlcnM/IE9yIGlzIGl0IGRlbGliZXJhdGVseSBoaWRkZW4gZm9yIGEgc3BlY2lmaWMgcmVhc29uIHdpdGhpbiB0aGUgbWFjdmxhbiBpbXBsZW1lbnRhdGlvbj8gQW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIGZvbGxvdyB1cC5cblxuVGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBvZiBgbWFjdmxhbl9uZXdsaW5rYCB0aHJvd3MgYSBsaWdodCBvbiBpdHMgaW50aW1hdGUgY29ubmVjdGlvbiB0byBhIHNwZWNpZmljIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4gSSBzaG91bGQga2VlcCBpdCBpbiBtaW5kLlxuXG5UaGVuLCB0aGVyZSdzIGFub3RoZXIgcG9pbnQuIEkgbmVlZCB0byBiZSBtb3JlIHRob3JvdWdoLCBzbyBJIGJldHRlciBleHBhbmQgbXkgc2VhcmNoLiBNeSBtaW5kIG5vdyB0dXJucyB0byBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIElzIHRoYXQgcGFydCBvZiBpdD8gV2hlcmUgZG9lcyAqdGhhdCogZml0IGludG8gdGhlIHBpY3R1cmU/IERvZXMgdGhhdCBoYW5kbGUgY29tbW9uIHNldHVwIG9yIGVycm9yIGhhbmRsaW5nIGJlZm9yZSB0aGUgbW9yZSBzcGVjaWZpYyBwYXJ0IG9mIG1hY3ZsYW4gc2V0dXA/IEl0IHNvdW5kcyBsaWtlIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgaW5pdGlhbCBnZW5lcmljIHNldHVwLCBvciBwZXJoYXBzIHdpdGggdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBvciBjb21tb24gaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSB0byB1bmRlcnN0YW5kIHRoZSByb2xlcyBvZiB0aG9zZSB0d28gcm91dGluZXMsIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gY2xhcmlmeSB0aGUgb3ZlcmFsbCBkZXNpZ24sIGhvdyBtYWN2bGFucyBhcmUgYWN0dWFsbHkgYnJvdWdodCBvbmxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjozMy42NDY2NzYwMDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTA2MDY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQxMT1zdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2Ni1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQ2NzppbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDY4LVxcdFxcdFxcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5OC19XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTk6RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MDE9c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjA0LXtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYwNTpcXHRyZXR1cm4gbWFjdmxhbl9jb21tb25fbmV3bGluayhkZXYsIHBhcmFtcywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjMzLjg2NTc0MjM1M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjEzMTM3OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNYWNWTEFOIEZ1bmN0aW9uIENhbGxzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGV4cG9ydGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgbG9naWMgc2VlbXMgdG8gYmUgaW4gYG1hY3ZsYW5fdmFsaWRhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdoZXRoZXIgYG1hY3ZsYW5fdmFsaWRhdGVgIGdldHMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBidXQgdGhhdCdzIG5vdCB0aGUgY2FzZS4gSSd2ZSBnb3QgdG8gcmVtZW1iZXIgdGhlIFJUTkwgcHJvY2Vzcy4uLiByaWdodCwgYHZhbGlkYXRlYCBpcyBjYWxsZWQgYnkgcnRuZXRsaW5rICpiZWZvcmUqIGVpdGhlciBgbmV3bGlua2Agb3IgYGNoYW5nZWxpbmtgLiBTbywgYHJ0bmxfbmV3bGlua2Agb3IgYHJ0bmxfc2V0bGlua2AgaXMgdXNpbmcgdGhhdCBgb3BzLVx1MDAzZXZhbGlkYXRlYCBmdW5jdGlvbiBwb2ludGVyLlxuXG5TaW5jZSBgbWFjdmxhbl92YWxpZGF0ZWAgaXMgKnN0YXRpYyosIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBhYm91dCBqdXN0IGZvY3VzaW5nIG9uIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gQnV0IHdhaXQuLi4gYG1hY3ZsYW5fdmFsaWRhdGVgICppcyogc3RhdGljLCB5ZXQgaXQncyBhc3NpZ25lZCB0byBgb3BzLVx1MDAzZXZhbGlkYXRlYC4gTm93IHRoYXQgSSdtIHRoaW5raW5nIGFib3V0IGl0LCB0aGF0IG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIGl0J3Mgbm90IGlubGluZWQuIEx1Y2tpbHksIGl0IGlzbid0LCBzbyBpdCdzIGFkZHJlc3NhYmxlLlxuXG5Ib3dldmVyLCB0aGUgcHJvbXB0IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLi4uIFNvLCB0byBiZSAqYWJzb2x1dGVseSogc2FmZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaW4gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QgYXMgd2VsbC4gIExldCdzIGFkZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB0byB0aGUgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0Mjo0MC40Nzg4ODM4MDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzAxNzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMzIyPXN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQxMC0gKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQxMTpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MTItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Njc9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTQ5LVxcdFxcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU1MDpcXHRcXHRlcnIgPSBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyh2bGFuLCBtYWNtb2RlLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU1MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYyMC1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYyMTpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjc0LVxcdFxcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY3NTpcXHRcXHRyZXQgPSBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyh2bGFuLCBtYWNtb2RlLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY3Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NzI9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NzctXFx0b3BzLVxcdTAwM2Vwb2xpY3lcXHRcXHQ9IG1hY3ZsYW5fcG9saWN5O1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzc4OlxcdG9wcy1cXHUwMDNlY2hhbmdlbGlua1xcdFxcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc5LVxcdG9wcy1cXHUwMDNlZ2V0X3NpemVcXHRcXHQ9IG1hY3ZsYW5fZ2V0X3NpemU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjQwLjU4NTkxMTE3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMwNDI5NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKk1hY3ZsYW4gTW9kdWxlIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgdGhlIGFyY2hpdGVjdHVyZSBoZXJlIGlzIHN0YXJ0aW5nIHRvIHNvbGlkaWZ5LiBJJ3ZlIG5vdGVkIHRoYXQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaXMgc3RhdGljYWxseSBkZWZpbmVkLCB3aGlsZSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgZ2V0cyBleHBvcnRlZC4gU2VlbXMgbG9naWNhbC4gSSBzaG91bGQgYWRkIGJvdGggb2YgdGhvc2UsIGFsb25nIHdpdGggYG1hY3ZsYW5fdmFsaWRhdGVgLCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC4gVGhhdCB3YXksIEknbGwgaGF2ZSBhbGwgdGhlIGtleSBidWlsZGluZyBibG9ja3MgcmlnaHQgYXQgbXkgZmluZ2VydGlwcy5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBUaGUgcHJpbWFyeSBkcml2ZXIsIG9mIGNvdXJzZSwgaXMgYENPTkZJR19NQUNWTEFOYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAgdGhhdCBJIHNob3VsZG4ndCBvdmVybG9vay4gTGV0IG1lIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyBjYXJlZnVsbHkgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vIGhpZGRlbiBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDQuNzE2MzQzNDg2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0MzY1NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQ1ZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0Mjo0NC44NjI3OTE3MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDQ4NjQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYE1BQ1ZMQU5gIHNpdHVhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBGb3JnZXQganVtcGluZyBpbnRvIHRoZSB3ZWVkcyB3aXRoIGNvZGUganVzdCB5ZXQ7IEkgbmVlZCBhIGhpZ2gtbGV2ZWwgdmlldy4gV2hhdCBvdGhlciBuZXR3b3JraW5nIGNvbnN0cnVjdHMgaXMgaXQgYnVpbHQgb24/IE9idmlvdXNseSwgaXQgbGV2ZXJhZ2VzIHRoZSBleGlzdGluZyBMaW51eCBuZXR3b3JraW5nIHN0YWNrLCBzbyBJIGtub3cgSSdtIGRlYWxpbmcgd2l0aCBgbmV0bGlua2AgY2FsbHMsIGxpa2VseSB0aWVkIHRvIGBicmlkZ2VgIGNvbmZpZ3VyYXRpb25zICh0aG91Z2ggcG90ZW50aWFsbHkgYnlwYXNzaW5nIGEgYnJpZGdlIGFsdG9nZXRoZXIpLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGRpZmZlcmVudCBtb2RlcyDigJMgYGJyaWRnZWAsIGBwcml2YXRlYCwgYHZlcGFgLCBldGMuIC0gYW5kIGhvdyBlYWNoIGFmZmVjdHMgdGhlIHBhcmVudCBpbnRlcmZhY2UgaW50ZXJhY3Rpb24uIFRoZW4sIHRoZXJlJ3MgdGhlIHdob2xlIGxheWVyLTIgYXNwZWN0OyBJIG5lZWQgdG8gY29uc2lkZXIgaG93IEFSUCByZXNvbHV0aW9uIGFuZCBNQUMgYWRkcmVzcyBsZWFybmluZyBwbGF5IGludG8gdGhlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gdGhlIHVuZGVybHlpbmcgTklDIGRyaXZlciBvciB0aGUgc3dpdGNoJ3MgZm9yd2FyZGluZyB0YWJsZXMsIGVzcGVjaWFsbHkgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBgTUFDVkxBTmAgaW50ZXJmYWNlcz8gSXMgdGhlcmUga2VybmVsIG1vZHVsZSBpbnRlcmFjdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIHdpdGggcHJvbWlzY3VvdXMgbW9kZT8gUmlnaHQsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoYXQgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBMZXQncyBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDguNzUzMjgxNDgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRjb25maWcgTUFDVkxBTlxcbiAxNjY6XFx0XFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuIDE2NzpcXHRcXHRoZWxwXFxuIDE2ODpcXHRcXHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgbWFwIHBhY2tldHMgdG9cXG4gMTY5OlxcdFxcdCAgb3IgZnJvbSBzcGVjaWZpYyBNQUMgYWRkcmVzc2VzIHRvIGEgcGFydGljdWxhciBpbnRlcmZhY2UuXFxuIDE3MDpcXHRcXG4gMTcxOlxcdFxcdCAgTWFjdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDE3MjpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMi42LjIzIHJlbGVhc2U6XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdCAgXFxcImlwIGxpbmsgYWRkIGxpbmsgXFx1MDAzY3JlYWwgZGV2XFx1MDAzZSBbIGFkZHJlc3MgTUFDIF0gWyBOQU1FIF0gdHlwZSBtYWN2bGFuXFxcIlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTc3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdmxhbi5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIE1BQ1ZUQVBcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbiAxODE6XFx0XFx0ZGVwZW5kcyBvbiBNQUNWTEFOXFxuIDE4MjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMTgzOlxcdFxcdHNlbGVjdCBUQVBcXG4gMTg0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDguNzUzMzg5NTUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NDM3NjU1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFDVkxBTiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgYE1BQ1ZMQU5gIGNoYW5nZSBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgZ29vZCBuZXdzIGlzLCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBgTUFDVkxBTmAgaXRzZWxmIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuIFRoYXQgbWFrZXMgdGhpbmdzIGNsZWFuZXIg4oCTIGl0J3MgYWxsIHNlbGYtY29udGFpbmVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIGp1c3QgYE1BQ1ZMQU5gLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpZWQgaXMgc29sZWx5IGBtYWN2bGFuX3ZhbGlkYXRlYC4gQWxyaWdodCwgdGhpcyBpcyBhIHB1cmVseSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFkZGluZyBhIHBlcm1pc3Npb24gY2hlY2suIFRoYXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSBgV29ydGhGdXp6aW5nYCwgbGV0J3MgZ2V0IHRoYXQgbWFya2VkLlxuXG5HaXZlbiB0aGlzLCBJJ20gZ29pbmcgdG8gcHV0IG15IGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBtYWN2bGFuX3ZhbGlkYXRlYCwgbmF0dXJhbGx5LCBidXQgYWxzbyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHRvIGdpdmUgdGhlIGZ1enppbmcgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBTbyB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiBpcyBgTUFDVkxBTmAuXG5cblVsdGltYXRlbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcGVybWlzc2lvbiBjaGVjayB3aXRoaW4gYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIHRoZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgYXR0cmlidXRlIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyB0aGUgZGVmYXVsdC4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtYWN2bGFuIGRyaXZlcidzIG5ldGxpbmsgaW50ZXJmYWNlLiBTaW5jZSBuZXRsaW5rIGlzIHVzZXItc3BhY2UgYWNjZXNzaWJsZSwgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTk4LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjU0LjU5NzE1ODE5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzU4MDEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh68t8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 04:23:27 +0000 UTC FinishedAt: 2026-07-31 04:42:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "b93ac873-e55b-4063-bf3f-14a113981586" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_validate", "macvlan_common_newlink", "macvlan_changelink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjgyNmU4MjIzYTRmMjJjODE3MGMwYmY0NjM3NzJkMzEwMWQxMDI5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA0OjQyOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtMTMzNSw2ICYjNDM7MTMzNSwxNSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuIFx0aWYgKCFkYXRhKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXHUwMDNlXG4mIzQzO1x0XHRcdE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU4gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7YmNfcXVldWVfbGVuIGFib3ZlIHRoZSBkZWZhdWx0IHJlcXVpcmVzIENBUF9ORVRfQURNSU4gaW4gdGhlIGluaXRpYWwgdXNlciBuYW1lc3BhY2VcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FUEVSTTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFx1MDAyNiB+KE1BQ1ZMQU5fRkxBR19OT1BST01JU0MgfFxuIFx0XHRcdFx0XHRcdCAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjgyNmU4MjIzYTRmMjJjODE3MGMwYmY0NjM3NzJkMzEwMWQxMDI5MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA0OjQyOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCmluZGV4IGM0MGZhMzMxODM2YmIuLmZjOTU2NTRhYmNhOGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKQEAgLTEzMzUsNiAmIzQzOzEzMzUsMTUgQEAgc3RhdGljIGludCBtYWN2bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSwKIAlpZiAoIWRhdGEpCiAJCXJldHVybiAwOwogCiYjNDM7CWlmIChkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dICZhbXA7JmFtcDsKJiM0MzsJICAgIG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pICZndDsKJiM0MzsJCQlNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOICZhbXA7JmFtcDsKJiM0MzsJICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSwKJiM0MzsJCQkJICAgICYjMzQ7YmNfcXVldWVfbGVuIGFib3ZlIHRoZSBkZWZhdWx0IHJlcXVpcmVzIENBUF9ORVRfQURNSU4gaW4gdGhlIGluaXRpYWwgdXNlciBuYW1lc3BhY2UmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwl9CiYjNDM7CiAJaWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSAmYW1wOyZhbXA7CiAJICAgIG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSkgJmFtcDsgfihNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDIHwKIAkJCQkJCSAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjdmxhbiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTttIHNlZWluZyBoZXJlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIHZhbGlkYXRpb24gc3RlcCB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbiBpbiB0aGUgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AgZmlsZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBuZXRsaW5rIHZhbGlkYXRpb24gbG9naWMgZW5oYW5jZW1lbnQuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIGludm9sdmVzIGNoZWNraW5nIHRoZSB2YWx1ZSBvZiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgbm93IHZlcmlmaWVzIHdoZXRoZXIgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIGEgdmFsdWUgZXhjZWVkaW5nIGBNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOYCBhbmQsIGNyaXRpY2FsbHksIGlmIHRoZSB1c2VyIGF0dGVtcHRpbmcgdGhpcyBtb2RpZmljYXRpb24gKmxhY2tzKiB0aGUgYENBUF9ORVRfQURNSU5gIGNhcGFiaWxpdHkuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IOKAkyBhIGhpZ2ggcXVldWUgbGVuZ3RoIGFuZCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyDigJMgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGAtRVBFUk1gLCB3aGljaCBpcyBhIHBlcm1pc3Npb24gZGVuaWVkIGVycm9yLgoKU28sIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgbWFjdmxhbiBkcml2ZXIsIGFuZCBpdOKAmXMgYWNjZXNzZWQgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgYSBtYWN2bGFuIGludGVyZmFjZSB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGFzcGVjdCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZC4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIHdpbGwgYmUgY29tcGlsZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHNlY3VyaXR5IGhhcmRlbmluZyBtZWFzdXJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgbWFsaWNpb3VzIHF1ZXVlIGxlbmd0aCBzZXR0aW5ncyBmcm9tIHVucHJpdmlsZWdlZCB1c2Vycy4gVGhpcyBpcyBhIGdvb2QsIHRhcmdldGVkIGNoYW5nZSB0aGF0IHN0cmVuZ3RoZW5zIHNlY3VyaXR5IGZvciBtYWN2bGFuIGludGVyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19BTVQpICYjNDM7PSBhbXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX01BQ1ZMQU4pICYjNDM7PSBtYWN2bGFuLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19NQUNWVEFQKSAmIzQzOz0gbWFjdnRhcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTUFDVkxBTiBDb25maWd1cmF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBNQUNWTEFOYCBzZXR1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhhdCB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNlbnRyYWwgZm9jdXMuIEhvbGQgb24gYSBzZWNvbmQsIGxvb2tzIGxpa2UgdGhlIGNvcmUgdmFsaWRhdGlvbiBsb2dpYyBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmVzaWRlcyB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbi4gT2theSwgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBvaW50cyBvciBob29rcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gbWFjdmxhbl92YWxpZGF0ZSBpbiBkcml2ZXJzL25ldC9tYWN2bGFuLmMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE1BQ1ZMQU4gdmFsaWRhdGlvbiB3b3Jrcy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdGhlIGNvcmUgbG9naWMgZm9yIGVuc3VyaW5nIHRoYXQgTUFDVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgc291bmQgdG8gcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBpdCB0YWtlcyBhbmQgd2hhdCBpdCYjMzk7cyBjaGVja2luZyBmb3Ig4oCTIHRoaW5ncyBsaWtlIGNvbmZsaWN0aW5nIE1BQyBhZGRyZXNzZXMsIFZMQU4gSUQgYXNzaWdubWVudHMsIGFuZCB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSBpcyBpbiBhIHZhbGlkIHN0YXRlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIHF1aWNrbHkgc2tpbSB0aHJvdWdoIGFueSBjYWxsaW5nIGZ1bmN0aW9ucyB0byBzZWUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyB2YWxpZGF0aW9uIG9jY3Vycy4gSXMgaXQgZHVyaW5nIGludGVyZmFjZSBjcmVhdGlvbiwgY29uZmlndXJhdGlvbiB1cGRhdGVzLCBvciBib3RoPyBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgY3JpdGljYWwgdGhpcyB2YWxpZGF0aW9uIHRydWx5IGlzIGFuZCB3aGF0IHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIEkgbmVlZCB0byBsb29rIGZvci4gVWx0aW1hdGVseSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBhIGtleSBwaWVjZSBpbiBlbnN1cmluZyB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0IG9wZXJhdGlvbiBvZiBNQUNWTEFOIHZpcnR1YWwgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg1PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEzMjEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMjpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEzMjMtXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc3Mj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NzQtXHQvKiBjb21tb24gZmllbGRzICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc3NTpcdG9wcy1cdTAwM2V2YWxpZGF0ZVx0XHQ9IG1hY3ZsYW5fdmFsaWRhdGU7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3Ni1cdG9wcy1cdTAwM2VtYXh0eXBlXHRcdD0gSUZMQV9NQUNWTEFOX01BWDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBEcml2ZXIgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoYXQgYG1hY3ZsYW5fdmFsaWRhdGVgIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBidXQgaXQmIzM5O3MgZ2V0dGluZyBhc3NpZ25lZCB0byB0aGUgYG9wcy0mZ3Q7dmFsaWRhdGVgIG1lbWJlci4gSG1tLCB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzICpwYXJ0KiBvZiBhIGxhcmdlciwgbW9yZSBjb21wcmVoZW5zaXZlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlICYjMzQ7cmVhbCYjMzQ7IGVudHJ5IHBvaW50IGlzIOKAkyB0aGUgbm9uLXN0YXRpYyBvbmUuIElzIHRoZXJlIGEgdG9wLWxldmVsIGZ1bmN0aW9uIEkmIzM5O20gbWlzc2luZz8KCkkgaW5pdGlhbGx5IHRob3VnaHQgdGhhdCBgbWFjdmxhbl9saW5rX3JlZ2lzdGVyYCB3YXMgdGhlIGVudHJ5IHBvaW50IGJlY2F1c2Ugb2YgdGhlIG5hbWUsIGJ1dCBubywgdGhhdCByZWdpc3RlcnMgYHJ0bmxfbGlua19vcHNgLiBPa2F5LCBzbyBpdCYjMzk7cyBhIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiwgbm90IHRoZSBkcml2ZXImIzM5O3Mgc3RhcnRpbmcgcG9pbnQuCgpBaCwgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgYG1hY3ZsYW5fbmV3bGlua2AgbWVudGlvbmVkLiBBbmQgYWxzbyBgbWFjdmxhbl9jaGFuZ2VsaW5rYC4gVGhvc2Ugc291bmQgcHJvbWlzaW5nLiBNeSBndXQgc2F5cyBJIG5lZWQgdG8gZGlnIGludG8gdGhvc2UgdHdvIGZ1bmN0aW9ucyBub3cuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIGF0IHRoZSBtb21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OT1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAwLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MDE6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAyLVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3OTE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3OTMtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3OTQ6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5NS1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBhc3N1bXB0aW9uIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBNYWN2bGFuIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtYWN2bGFuX25ld2xpbmtgIGZ1bmN0aW9uIGFnYWluLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3MgYSBxdWVzdGlvbi4gV2h5IGlzIGl0IHN0YXRpYz8gU2hvdWxkbiYjMzk7dCBhIGNvcmUgZnVuY3Rpb24gbGlrZSB0aGF0IGJlIG1vcmUgYWNjZXNzaWJsZSwgcG90ZW50aWFsbHkgcmV1c2FibGUgYWNyb3NzIGRpZmZlcmVudCBtb2R1bGVzIG9yIGRyaXZlcnM/IE9yIGlzIGl0IGRlbGliZXJhdGVseSBoaWRkZW4gZm9yIGEgc3BlY2lmaWMgcmVhc29uIHdpdGhpbiB0aGUgbWFjdmxhbiBpbXBsZW1lbnRhdGlvbj8gQW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGFuZCBmb2xsb3cgdXAuCgpUaGUgc3RhdGljIGRlY2xhcmF0aW9uIG9mIGBtYWN2bGFuX25ld2xpbmtgIHRocm93cyBhIGxpZ2h0IG9uIGl0cyBpbnRpbWF0ZSBjb25uZWN0aW9uIHRvIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSBiYXNlLiBJIHNob3VsZCBrZWVwIGl0IGluIG1pbmQuCgpUaGVuLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50LiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCwgc28gSSBiZXR0ZXIgZXhwYW5kIG15IHNlYXJjaC4gTXkgbWluZCBub3cgdHVybnMgdG8gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJcyB0aGF0IHBhcnQgb2YgaXQ/IFdoZXJlIGRvZXMgKnRoYXQqIGZpdCBpbnRvIHRoZSBwaWN0dXJlPyBEb2VzIHRoYXQgaGFuZGxlIGNvbW1vbiBzZXR1cCBvciBlcnJvciBoYW5kbGluZyBiZWZvcmUgdGhlIG1vcmUgc3BlY2lmaWMgcGFydCBvZiBtYWN2bGFuIHNldHVwPyBJdCBzb3VuZHMgbGlrZSB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0IG1pZ2h0IGJlIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHRoZSBpbml0aWFsIGdlbmVyaWMgc2V0dXAsIG9yIHBlcmhhcHMgd2l0aCB0aGUgaW5pdGlhbCBhbGxvY2F0aW9uIG9yIGNvbW1vbiBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSB0byB1bmRlcnN0YW5kIHRoZSByb2xlcyBvZiB0aG9zZSB0d28gcm91dGluZXMsIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGNsYXJpZnkgdGhlIG92ZXJhbGwgZGVzaWduLCBob3cgbWFjdmxhbnMgYXJlIGFjdHVhbGx5IGJyb3VnaHQgb25saW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDExPXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2Ni1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY3OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2OC1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk4LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTk5OkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYwMT1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjA0LXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjA1Olx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1hY1ZMQU4gRnVuY3Rpb24gQ2FsbHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gQnV0IHRoZSBjb3JlIGxvZ2ljIHNlZW1zIHRvIGJlIGluIGBtYWN2bGFuX3ZhbGlkYXRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3aGV0aGVyIGBtYWN2bGFuX3ZhbGlkYXRlYCBnZXRzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBJJiMzOTt2ZSBnb3QgdG8gcmVtZW1iZXIgdGhlIFJUTkwgcHJvY2Vzcy4uLiByaWdodCwgYHZhbGlkYXRlYCBpcyBjYWxsZWQgYnkgcnRuZXRsaW5rICpiZWZvcmUqIGVpdGhlciBgbmV3bGlua2Agb3IgYGNoYW5nZWxpbmtgLiBTbywgYHJ0bmxfbmV3bGlua2Agb3IgYHJ0bmxfc2V0bGlua2AgaXMgdXNpbmcgdGhhdCBgb3BzLSZndDt2YWxpZGF0ZWAgZnVuY3Rpb24gcG9pbnRlci4KClNpbmNlIGBtYWN2bGFuX3ZhbGlkYXRlYCBpcyAqc3RhdGljKiwgSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGFib3V0IGp1c3QgZm9jdXNpbmcgb24gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhcyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLiBCdXQgd2FpdC4uLiBgbWFjdmxhbl92YWxpZGF0ZWAgKmlzKiBzdGF0aWMsIHlldCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgb3BzLSZndDt2YWxpZGF0ZWAuIE5vdyB0aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIHRoYXQgbWVhbnMgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBgbWFjdmxhbl92YWxpZGF0ZWAgaWYgaXQmIzM5O3Mgbm90IGlubGluZWQuIEx1Y2tpbHksIGl0IGlzbiYjMzk7dCwgc28gaXQmIzM5O3MgYWRkcmVzc2FibGUuCgpIb3dldmVyLCB0aGUgcHJvbXB0IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLi4uIFNvLCB0byBiZSAqYWJzb2x1dGVseSogc2FmZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaW4gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QgYXMgd2VsbC4gIExldCYjMzk7cyBhZGQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gdGhlIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMj1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDEwLSAqL1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MTE6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MTItXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Njc9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0OS1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NTA6XHRcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIwLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MjE6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIyLVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY3NC1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2NzU6XHRcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NzYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NzI9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc3LVx0b3BzLVx1MDAzZXBvbGljeVx0XHQ9IG1hY3ZsYW5fcG9saWN5O1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Nzg6XHRvcHMtXHUwMDNlY2hhbmdlbGlua1x0XHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc5LVx0b3BzLVx1MDAzZWdldF9zaXplXHRcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTWFjdmxhbiBNb2R1bGUgRGVlcCBEaXZlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBhcmNoaXRlY3R1cmUgaGVyZSBpcyBzdGFydGluZyB0byBzb2xpZGlmeS4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBpcyBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWxlIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBnZXRzIGV4cG9ydGVkLiBTZWVtcyBsb2dpY2FsLiBJIHNob3VsZCBhZGQgYm90aCBvZiB0aG9zZSwgYWxvbmcgd2l0aCBgbWFjdmxhbl92YWxpZGF0ZWAsIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdheSwgSSYjMzk7bGwgaGF2ZSBhbGwgdGhlIGtleSBidWlsZGluZyBibG9ja3MgcmlnaHQgYXQgbXkgZmluZ2VydGlwcy4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFRoZSBwcmltYXJ5IGRyaXZlciwgb2YgY291cnNlLCBpcyBgQ09ORklHX01BQ1ZMQU5gLiBJIG5lZWQgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwIHRoYXQgSSBzaG91bGRuJiMzOTt0IG92ZXJsb29rLiBMZXQgbWUgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGNhcmVmdWxseSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gaGlkZGVuIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNQUNWTEFOIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgTUFDVkxBTmAgc2l0dWF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEZvcmdldCBqdW1waW5nIGludG8gdGhlIHdlZWRzIHdpdGggY29kZSBqdXN0IHlldDsgSSBuZWVkIGEgaGlnaC1sZXZlbCB2aWV3LiBXaGF0IG90aGVyIG5ldHdvcmtpbmcgY29uc3RydWN0cyBpcyBpdCBidWlsdCBvbj8gT2J2aW91c2x5LCBpdCBsZXZlcmFnZXMgdGhlIGV4aXN0aW5nIExpbnV4IG5ldHdvcmtpbmcgc3RhY2ssIHNvIEkga25vdyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgbmV0bGlua2AgY2FsbHMsIGxpa2VseSB0aWVkIHRvIGBicmlkZ2VgIGNvbmZpZ3VyYXRpb25zICh0aG91Z2ggcG90ZW50aWFsbHkgYnlwYXNzaW5nIGEgYnJpZGdlIGFsdG9nZXRoZXIpLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBkaWZmZXJlbnQgbW9kZXMg4oCTIGBicmlkZ2VgLCBgcHJpdmF0ZWAsIGB2ZXBhYCwgZXRjLiAtIGFuZCBob3cgZWFjaCBhZmZlY3RzIHRoZSBwYXJlbnQgaW50ZXJmYWNlIGludGVyYWN0aW9uLiBUaGVuLCB0aGVyZSYjMzk7cyB0aGUgd2hvbGUgbGF5ZXItMiBhc3BlY3Q7IEkgbmVlZCB0byBjb25zaWRlciBob3cgQVJQIHJlc29sdXRpb24gYW5kIE1BQyBhZGRyZXNzIGxlYXJuaW5nIHBsYXkgaW50byB0aGUgcGljdHVyZS4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZSBsaW1pdGF0aW9ucyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgcmVsYXRlZCB0byB0aGUgdW5kZXJseWluZyBOSUMgZHJpdmVyIG9yIHRoZSBzd2l0Y2gmIzM5O3MgZm9yd2FyZGluZyB0YWJsZXMsIGVzcGVjaWFsbHkgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBgTUFDVkxBTmAgaW50ZXJmYWNlcz8gSXMgdGhlcmUga2VybmVsIG1vZHVsZSBpbnRlcmFjdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIHdpdGggcHJvbWlzY3VvdXMgbW9kZT8gUmlnaHQsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoYXQgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGFsbCBjb25uZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRjb25maWcgTUFDVkxBTlxuIDE2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDE2NzpcdFx0aGVscFxuIDE2ODpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IG1hcCBwYWNrZXRzIHRvXG4gMTY5Olx0XHQgIG9yIGZyb20gc3BlY2lmaWMgTUFDIGFkZHJlc3NlcyB0byBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLlxuIDE3MDpcdFxuIDE3MTpcdFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMTcyOlx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMi42LjIzIHJlbGVhc2U6XG4gMTczOlx0XG4gMTc0Olx0XHQgIFwmIzM0O2lwIGxpbmsgYWRkIGxpbmsgXHUwMDNjcmVhbCBkZXZcdTAwM2UgWyBhZGRyZXNzIE1BQyBdIFsgTkFNRSBdIHR5cGUgbWFjdmxhblwmIzM0O1xuIDE3NTpcdFxuIDE3NjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTc3Olx0XHQgIHdpbGwgYmUgY2FsbGVkIG1hY3ZsYW4uXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIE1BQ1ZUQVBcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbiAxODE6XHRcdGRlcGVuZHMgb24gTUFDVkxBTlxuIDE4MjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMTgzOlx0XHRzZWxlY3QgVEFQXG4gMTg0Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxOTgKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ1ZMQU4gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBgTUFDVkxBTmAgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBnb29kIG5ld3MgaXMsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGBNQUNWTEFOYCBpdHNlbGYgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gVGhhdCBtYWtlcyB0aGluZ3MgY2xlYW5lciDigJMgaXQmIzM5O3MgYWxsIHNlbGYtY29udGFpbmVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIGp1c3QgYE1BQ1ZMQU5gLgoKTm93LCBkaWdnaW5nIGRlZXBlciwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIG1vZGlmaWVkIGlzIHNvbGVseSBgbWFjdmxhbl92YWxpZGF0ZWAuIEFscmlnaHQsIHRoaXMgaXMgYSBwdXJlbHkgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBwZXJtaXNzaW9uIGNoZWNrLiBUaGF0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IGBXb3J0aEZ1enppbmdgLCBsZXQmIzM5O3MgZ2V0IHRoYXQgbWFya2VkLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byBwdXQgbXkgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG1hY3ZsYW5fdmFsaWRhdGVgLCBuYXR1cmFsbHksIGJ1dCBhbHNvIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gZ2l2ZSB0aGUgZnV6emluZyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduIGlzIGBNQUNWTEFOYC4KClVsdGltYXRlbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcGVybWlzc2lvbiBjaGVjayB3aXRoaW4gYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIHRoZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgYXR0cmlidXRlIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyB0aGUgZGVmYXVsdC4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtYWN2bGFuIGRyaXZlciYjMzk7cyBuZXRsaW5rIGludGVyZmFjZS4gU2luY2UgbmV0bGluayBpcyB1c2VyLXNwYWNlIGFjY2Vzc2libGUsIGl0IGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX3ZhbGlkYXRlJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXImIzM5O3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcGVybWlzc2lvbiBjaGVjayB0byBgbWFjdmxhbl92YWxpZGF0ZWAgd2hlbiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgaXMgc2V0IGFib3ZlIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hY3ZsYW4gZHJpdmVyJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGljaCBpcyByZWFjaGFibGUgYnkgdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjA3LjA3MzMzNjM4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzMxNDIwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX3ZhbGlkYXRlXCIsXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVybWlzc2lvbiBjaGVjayB0byBgbWFjdmxhbl92YWxpZGF0ZWAgd2hlbiBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgaXMgc2V0IGFib3ZlIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hY3ZsYW4gZHJpdmVyJ3MgbmV0bGluayBpbnRlcmZhY2UsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjowNy4wNzMzNDQwMTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTkwMjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI4MjZlODIyM2E0ZjIyYzgxNzBjMGJmNDYzNzcyZDMxMDFkMTAyOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6NDI6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG5AQCAtMTMzNSw2ICsxMzM1LDE1IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuIFxcdGlmICghZGF0YSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbitcXHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXFx1MDAzZVxcbitcXHRcXHRcXHRNQUNWTEFOX0RFRkFVTFRfQkNfUVVFVUVfTEVOIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJiY19xdWV1ZV9sZW4gYWJvdmUgdGhlIGRlZmF1bHQgcmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBpbiB0aGUgaW5pdGlhbCB1c2VyIG5hbWVzcGFjZVxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFxcdTAwMjYgfihNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDIHxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgTUFDVkxBTl9GTEFHX05PRFNUKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6MDcuNjM2MjM1MTQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxNjg1MDgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI4MjZlODIyM2E0ZjIyYzgxNzBjMGJmNDYzNzcyZDMxMDFkMTAyOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNDo0MjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYi4uZmM5NTY1NGFiY2E4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtMTMzNSw2ICsxMzM1LDE1IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4gXHRpZiAoIWRhdGEpXG4gXHRcdHJldHVybiAwO1xuIFxuK1x0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gXHUwMDI2XHUwMDI2XG4rXHQgICAgbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkgXHUwMDNlXG4rXHRcdFx0TUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTiBcdTAwMjZcdTAwMjZcbitcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSxcbitcdFx0XHRcdCAgICBcImJjX3F1ZXVlX2xlbiBhYm92ZSB0aGUgZGVmYXVsdCByZXF1aXJlcyBDQVBfTkVUX0FETUlOIGluIHRoZSBpbml0aWFsIHVzZXIgbmFtZXNwYWNlXCIpO1xuK1x0XHRyZXR1cm4gLUVQRVJNO1xuK1x0fVxuK1xuIFx0aWYgKGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIFx1MDAyNiB+KE1BQ1ZMQU5fRkxBR19OT1BST01JU0MgfFxuIFx0XHRcdFx0XHRcdCAgICAgIE1BQ1ZMQU5fRkxBR19OT0RTVCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjowNy42MzYyMzc2NDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDEzMDY3MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIG1hY3ZsYW4gRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJ20gc2VlaW5nIGhlcmUuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgdmFsaWRhdGlvbiBzdGVwIHdpdGhpbiB0aGUgYG1hY3ZsYW5fdmFsaWRhdGVgIGZ1bmN0aW9uIGluIHRoZSBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCBmaWxlLiBJdCdzIGVzc2VudGlhbGx5IGEgbmV0bGluayB2YWxpZGF0aW9uIGxvZ2ljIGVuaGFuY2VtZW50LiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBpbnZvbHZlcyBjaGVja2luZyB0aGUgdmFsdWUgb2YgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIG5vdyB2ZXJpZmllcyB3aGV0aGVyIHRoaXMgcGFyYW1ldGVyIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyBgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTmAgYW5kLCBjcml0aWNhbGx5LCBpZiB0aGUgdXNlciBhdHRlbXB0aW5nIHRoaXMgbW9kaWZpY2F0aW9uICpsYWNrcyogdGhlIGBDQVBfTkVUX0FETUlOYCBjYXBhYmlsaXR5LiBJZiBib3RoIGNvbmRpdGlvbnMgYXJlIG1ldCDigJMgYSBoaWdoIHF1ZXVlIGxlbmd0aCBhbmQgaW5zdWZmaWNpZW50IHByaXZpbGVnZXMg4oCTIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBgLUVQRVJNYCwgd2hpY2ggaXMgYSBwZXJtaXNzaW9uIGRlbmllZCBlcnJvci5cblxuU28sIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgbWFjdmxhbiBkcml2ZXIsIGFuZCBpdOKAmXMgYWNjZXNzZWQgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgYSBtYWN2bGFuIGludGVyZmFjZSB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGFzcGVjdCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZC4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIGBDT05GSUdfTUFDVkxBTmAgaXMgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIHdpbGwgYmUgY29tcGlsZWQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgc2VjdXJpdHkgaGFyZGVuaW5nIG1lYXN1cmUgdG8gcHJldmVudCBwb3RlbnRpYWxseSBtYWxpY2lvdXMgcXVldWUgbGVuZ3RoIHNldHRpbmdzIGZyb20gdW5wcml2aWxlZ2VkIHVzZXJzLiBUaGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgY2hhbmdlIHRoYXQgc3RyZW5ndGhlbnMgc2VjdXJpdHkgZm9yIG1hY3ZsYW4gaW50ZXJmYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjEzLjA0OTMwNzcwM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyMzI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQU1UKSArPSBhbXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19NQUNWTEFOKSArPSBtYWN2bGFuLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfTUFDVlRBUCkgKz0gbWFjdnRhcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjEzLjIxOTU0NzE1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTEyMjYwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTUFDVkxBTiBDb25maWd1cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgTUFDVkxBTmAgc2V0dXAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25maXJtIHRoYXQgdGhlIGBNQUNWTEFOYCBjb25maWd1cmF0aW9uIGlzIHRoZSBjZW50cmFsIGZvY3VzLiBIb2xkIG9uIGEgc2Vjb25kLCBsb29rcyBsaWtlIHRoZSBjb3JlIHZhbGlkYXRpb24gbG9naWMgSSdtIGludGVyZXN0ZWQgaW4gcmVzaWRlcyB3aXRoaW4gdGhlIGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbi4gT2theSwgbGV0J3MgdHJhY2UgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG9yIGhvb2tzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6MTYuNjEwNzc1NTY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzU4MTg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjE2LjgwNDM2NDE4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTkzMjQ0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gbWFjdmxhbl92YWxpZGF0ZSBpbiBkcml2ZXJzL25ldC9tYWN2bGFuLmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTUFDVkxBTiB2YWxpZGF0aW9uIHdvcmtzLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IEkgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gYG1hY3ZsYW5fdmFsaWRhdGVgIHdpdGhpbiBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYC4gVGhpcyBpcyB3aGVyZSBJJ2QgZXhwZWN0IHRoZSBjb3JlIGxvZ2ljIGZvciBlbnN1cmluZyB0aGF0IE1BQ1ZMQU4gY29uZmlndXJhdGlvbnMgYXJlIHNvdW5kIHRvIHJlc2lkZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50cyBpdCB0YWtlcyBhbmQgd2hhdCBpdCdzIGNoZWNraW5nIGZvciDigJMgdGhpbmdzIGxpa2UgY29uZmxpY3RpbmcgTUFDIGFkZHJlc3NlcywgVkxBTiBJRCBhc3NpZ25tZW50cywgYW5kIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgaW50ZXJmYWNlIGlzIGluIGEgdmFsaWQgc3RhdGUuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gcXVpY2tseSBza2ltIHRocm91Z2ggYW55IGNhbGxpbmcgZnVuY3Rpb25zIHRvIHNlZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIHZhbGlkYXRpb24gb2NjdXJzLiBJcyBpdCBkdXJpbmcgaW50ZXJmYWNlIGNyZWF0aW9uLCBjb25maWd1cmF0aW9uIHVwZGF0ZXMsIG9yIGJvdGg/IFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyBjcml0aWNhbCB0aGlzIHZhbGlkYXRpb24gdHJ1bHkgaXMgYW5kIHdoYXQgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMgSSBuZWVkIHRvIGxvb2sgZm9yLiBVbHRpbWF0ZWx5LCBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgYSBrZXkgcGllY2UgaW4gZW5zdXJpbmcgdGhlIHN0YWJpbGl0eSBhbmQgY29ycmVjdCBvcGVyYXRpb24gb2YgTUFDVkxBTiB2aXJ0dWFsIGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjoyMC4zMjM2OTE2NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3Mzk1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg1PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMjpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMzIzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc3Mj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3NC1cXHQvKiBjb21tb24gZmllbGRzICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NzU6XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdFxcdD0gbWFjdmxhbl92YWxpZGF0ZTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3Ni1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjIwLjQzMTA5MjIwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzMwMjAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgTWFjdmxhbiBEcml2ZXIgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGF0IGBtYWN2bGFuX3ZhbGlkYXRlYCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IGl0J3MgZ2V0dGluZyBhc3NpZ25lZCB0byB0aGUgYG9wcy1cdTAwM2V2YWxpZGF0ZWAgbWVtYmVyLiBIbW0sIHRoYXQgc3VnZ2VzdHMgaXQncyAqcGFydCogb2YgYSBsYXJnZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzdHJ1Y3R1cmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBcInJlYWxcIiBlbnRyeSBwb2ludCBpcyDigJMgdGhlIG5vbi1zdGF0aWMgb25lLiBJcyB0aGVyZSBhIHRvcC1sZXZlbCBmdW5jdGlvbiBJJ20gbWlzc2luZz9cblxuSSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIHdhcyB0aGUgZW50cnkgcG9pbnQgYmVjYXVzZSBvZiB0aGUgbmFtZSwgYnV0IG5vLCB0aGF0IHJlZ2lzdGVycyBgcnRubF9saW5rX29wc2AuIE9rYXksIHNvIGl0J3MgYSByZWdpc3RyYXRpb24gZnVuY3Rpb24sIG5vdCB0aGUgZHJpdmVyJ3Mgc3RhcnRpbmcgcG9pbnQuXG5cbkFoLCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbWFjdmxhbl9uZXdsaW5rYCBtZW50aW9uZWQuIEFuZCBhbHNvIGBtYWN2bGFuX2NoYW5nZWxpbmtgLiBUaG9zZSBzb3VuZCBwcm9taXNpbmcuIE15IGd1dCBzYXlzIEkgbmVlZCB0byBkaWcgaW50byB0aG9zZSB0d28gZnVuY3Rpb25zIG5vdy4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiBhdCB0aGUgbW9tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjI3LjM2NDExNjI3N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NzU0Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MDE6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwMi1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3OTE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5My1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3OTQ6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc5NS1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjoyNy41NTg5MzM5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NzczNzgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBhc3N1bXB0aW9uIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTWFjdmxhbiBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG1hY3ZsYW5fbmV3bGlua2AgZnVuY3Rpb24gYWdhaW4uIEl0J3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgc3BhcmtzIGEgcXVlc3Rpb24uIFdoeSBpcyBpdCBzdGF0aWM/IFNob3VsZG4ndCBhIGNvcmUgZnVuY3Rpb24gbGlrZSB0aGF0IGJlIG1vcmUgYWNjZXNzaWJsZSwgcG90ZW50aWFsbHkgcmV1c2FibGUgYWNyb3NzIGRpZmZlcmVudCBtb2R1bGVzIG9yIGRyaXZlcnM/IE9yIGlzIGl0IGRlbGliZXJhdGVseSBoaWRkZW4gZm9yIGEgc3BlY2lmaWMgcmVhc29uIHdpdGhpbiB0aGUgbWFjdmxhbiBpbXBsZW1lbnRhdGlvbj8gQW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIGZvbGxvdyB1cC5cblxuVGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBvZiBgbWFjdmxhbl9uZXdsaW5rYCB0aHJvd3MgYSBsaWdodCBvbiBpdHMgaW50aW1hdGUgY29ubmVjdGlvbiB0byBhIHNwZWNpZmljIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4gSSBzaG91bGQga2VlcCBpdCBpbiBtaW5kLlxuXG5UaGVuLCB0aGVyZSdzIGFub3RoZXIgcG9pbnQuIEkgbmVlZCB0byBiZSBtb3JlIHRob3JvdWdoLCBzbyBJIGJldHRlciBleHBhbmQgbXkgc2VhcmNoLiBNeSBtaW5kIG5vdyB0dXJucyB0byBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIElzIHRoYXQgcGFydCBvZiBpdD8gV2hlcmUgZG9lcyAqdGhhdCogZml0IGludG8gdGhlIHBpY3R1cmU/IERvZXMgdGhhdCBoYW5kbGUgY29tbW9uIHNldHVwIG9yIGVycm9yIGhhbmRsaW5nIGJlZm9yZSB0aGUgbW9yZSBzcGVjaWZpYyBwYXJ0IG9mIG1hY3ZsYW4gc2V0dXA/IEl0IHNvdW5kcyBsaWtlIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgaW5pdGlhbCBnZW5lcmljIHNldHVwLCBvciBwZXJoYXBzIHdpdGggdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBvciBjb21tb24gaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSB0byB1bmRlcnN0YW5kIHRoZSByb2xlcyBvZiB0aG9zZSB0d28gcm91dGluZXMsIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gY2xhcmlmeSB0aGUgb3ZlcmFsbCBkZXNpZ24sIGhvdyBtYWN2bGFucyBhcmUgYWN0dWFsbHkgYnJvdWdodCBvbmxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0MjozMy42NDY2NzYwMDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTA2MDY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQxMT1zdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2Ni1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQ2NzppbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDY4LVxcdFxcdFxcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5OC19XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTk6RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MDE9c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjA0LXtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYwNTpcXHRyZXR1cm4gbWFjdmxhbl9jb21tb25fbmV3bGluayhkZXYsIHBhcmFtcywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjMzLjg2NTc0MjM1M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjEzMTM3OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNYWNWTEFOIEZ1bmN0aW9uIENhbGxzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGV4cG9ydGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgbG9naWMgc2VlbXMgdG8gYmUgaW4gYG1hY3ZsYW5fdmFsaWRhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdoZXRoZXIgYG1hY3ZsYW5fdmFsaWRhdGVgIGdldHMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBidXQgdGhhdCdzIG5vdCB0aGUgY2FzZS4gSSd2ZSBnb3QgdG8gcmVtZW1iZXIgdGhlIFJUTkwgcHJvY2Vzcy4uLiByaWdodCwgYHZhbGlkYXRlYCBpcyBjYWxsZWQgYnkgcnRuZXRsaW5rICpiZWZvcmUqIGVpdGhlciBgbmV3bGlua2Agb3IgYGNoYW5nZWxpbmtgLiBTbywgYHJ0bmxfbmV3bGlua2Agb3IgYHJ0bmxfc2V0bGlua2AgaXMgdXNpbmcgdGhhdCBgb3BzLVx1MDAzZXZhbGlkYXRlYCBmdW5jdGlvbiBwb2ludGVyLlxuXG5TaW5jZSBgbWFjdmxhbl92YWxpZGF0ZWAgaXMgKnN0YXRpYyosIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBhYm91dCBqdXN0IGZvY3VzaW5nIG9uIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gQnV0IHdhaXQuLi4gYG1hY3ZsYW5fdmFsaWRhdGVgICppcyogc3RhdGljLCB5ZXQgaXQncyBhc3NpZ25lZCB0byBgb3BzLVx1MDAzZXZhbGlkYXRlYC4gTm93IHRoYXQgSSdtIHRoaW5raW5nIGFib3V0IGl0LCB0aGF0IG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIGl0J3Mgbm90IGlubGluZWQuIEx1Y2tpbHksIGl0IGlzbid0LCBzbyBpdCdzIGFkZHJlc3NhYmxlLlxuXG5Ib3dldmVyLCB0aGUgcHJvbXB0IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLi4uIFNvLCB0byBiZSAqYWJzb2x1dGVseSogc2FmZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaW4gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QgYXMgd2VsbC4gIExldCdzIGFkZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB0byB0aGUgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0Mjo0MC40Nzg4ODM4MDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzAxNzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMzIyPXN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQxMC0gKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQxMTpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MTItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Njc9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTQ5LVxcdFxcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU1MDpcXHRcXHRlcnIgPSBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyh2bGFuLCBtYWNtb2RlLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU1MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTk9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYyMC1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYyMTpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjIyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjc0LVxcdFxcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY3NTpcXHRcXHRyZXQgPSBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyh2bGFuLCBtYWNtb2RlLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY3Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NzI9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NzctXFx0b3BzLVxcdTAwM2Vwb2xpY3lcXHRcXHQ9IG1hY3ZsYW5fcG9saWN5O1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzc4OlxcdG9wcy1cXHUwMDNlY2hhbmdlbGlua1xcdFxcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzc5LVxcdG9wcy1cXHUwMDNlZ2V0X3NpemVcXHRcXHQ9IG1hY3ZsYW5fZ2V0X3NpemU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjQwLjU4NTkxMTE3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMwNDI5NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKk1hY3ZsYW4gTW9kdWxlIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgdGhlIGFyY2hpdGVjdHVyZSBoZXJlIGlzIHN0YXJ0aW5nIHRvIHNvbGlkaWZ5LiBJJ3ZlIG5vdGVkIHRoYXQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgaXMgc3RhdGljYWxseSBkZWZpbmVkLCB3aGlsZSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgZ2V0cyBleHBvcnRlZC4gU2VlbXMgbG9naWNhbC4gSSBzaG91bGQgYWRkIGJvdGggb2YgdGhvc2UsIGFsb25nIHdpdGggYG1hY3ZsYW5fdmFsaWRhdGVgLCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC4gVGhhdCB3YXksIEknbGwgaGF2ZSBhbGwgdGhlIGtleSBidWlsZGluZyBibG9ja3MgcmlnaHQgYXQgbXkgZmluZ2VydGlwcy5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBUaGUgcHJpbWFyeSBkcml2ZXIsIG9mIGNvdXJzZSwgaXMgYENPTkZJR19NQUNWTEFOYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAgdGhhdCBJIHNob3VsZG4ndCBvdmVybG9vay4gTGV0IG1lIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyBjYXJlZnVsbHkgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vIGhpZGRlbiBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDQuNzE2MzQzNDg2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0MzY1NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQ1ZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDo0Mjo0NC44NjI3OTE3MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDQ4NjQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYE1BQ1ZMQU5gIHNpdHVhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBGb3JnZXQganVtcGluZyBpbnRvIHRoZSB3ZWVkcyB3aXRoIGNvZGUganVzdCB5ZXQ7IEkgbmVlZCBhIGhpZ2gtbGV2ZWwgdmlldy4gV2hhdCBvdGhlciBuZXR3b3JraW5nIGNvbnN0cnVjdHMgaXMgaXQgYnVpbHQgb24/IE9idmlvdXNseSwgaXQgbGV2ZXJhZ2VzIHRoZSBleGlzdGluZyBMaW51eCBuZXR3b3JraW5nIHN0YWNrLCBzbyBJIGtub3cgSSdtIGRlYWxpbmcgd2l0aCBgbmV0bGlua2AgY2FsbHMsIGxpa2VseSB0aWVkIHRvIGBicmlkZ2VgIGNvbmZpZ3VyYXRpb25zICh0aG91Z2ggcG90ZW50aWFsbHkgYnlwYXNzaW5nIGEgYnJpZGdlIGFsdG9nZXRoZXIpLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGRpZmZlcmVudCBtb2RlcyDigJMgYGJyaWRnZWAsIGBwcml2YXRlYCwgYHZlcGFgLCBldGMuIC0gYW5kIGhvdyBlYWNoIGFmZmVjdHMgdGhlIHBhcmVudCBpbnRlcmZhY2UgaW50ZXJhY3Rpb24uIFRoZW4sIHRoZXJlJ3MgdGhlIHdob2xlIGxheWVyLTIgYXNwZWN0OyBJIG5lZWQgdG8gY29uc2lkZXIgaG93IEFSUCByZXNvbHV0aW9uIGFuZCBNQUMgYWRkcmVzcyBsZWFybmluZyBwbGF5IGludG8gdGhlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gdGhlIHVuZGVybHlpbmcgTklDIGRyaXZlciBvciB0aGUgc3dpdGNoJ3MgZm9yd2FyZGluZyB0YWJsZXMsIGVzcGVjaWFsbHkgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBgTUFDVkxBTmAgaW50ZXJmYWNlcz8gSXMgdGhlcmUga2VybmVsIG1vZHVsZSBpbnRlcmFjdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIHdpdGggcHJvbWlzY3VvdXMgbW9kZT8gUmlnaHQsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoYXQgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBMZXQncyBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDguNzUzMjgxNDgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRjb25maWcgTUFDVkxBTlxcbiAxNjY6XFx0XFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuIDE2NzpcXHRcXHRoZWxwXFxuIDE2ODpcXHRcXHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgbWFwIHBhY2tldHMgdG9cXG4gMTY5OlxcdFxcdCAgb3IgZnJvbSBzcGVjaWZpYyBNQUMgYWRkcmVzc2VzIHRvIGEgcGFydGljdWxhciBpbnRlcmZhY2UuXFxuIDE3MDpcXHRcXG4gMTcxOlxcdFxcdCAgTWFjdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDE3MjpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMi42LjIzIHJlbGVhc2U6XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdCAgXFxcImlwIGxpbmsgYWRkIGxpbmsgXFx1MDAzY3JlYWwgZGV2XFx1MDAzZSBbIGFkZHJlc3MgTUFDIF0gWyBOQU1FIF0gdHlwZSBtYWN2bGFuXFxcIlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTc3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdmxhbi5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIE1BQ1ZUQVBcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbiAxODE6XFx0XFx0ZGVwZW5kcyBvbiBNQUNWTEFOXFxuIDE4MjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMTgzOlxcdFxcdHNlbGVjdCBUQVBcXG4gMTg0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6NDI6NDguNzUzMzg5NTUyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NDM3NjU1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFDVkxBTiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgYE1BQ1ZMQU5gIGNoYW5nZSBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgZ29vZCBuZXdzIGlzLCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBgTUFDVkxBTmAgaXRzZWxmIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuIFRoYXQgbWFrZXMgdGhpbmdzIGNsZWFuZXIg4oCTIGl0J3MgYWxsIHNlbGYtY29udGFpbmVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIGp1c3QgYE1BQ1ZMQU5gLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpZWQgaXMgc29sZWx5IGBtYWN2bGFuX3ZhbGlkYXRlYC4gQWxyaWdodCwgdGhpcyBpcyBhIHB1cmVseSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFkZGluZyBhIHBlcm1pc3Npb24gY2hlY2suIFRoYXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSBgV29ydGhGdXp6aW5nYCwgbGV0J3MgZ2V0IHRoYXQgbWFya2VkLlxuXG5HaXZlbiB0aGlzLCBJJ20gZ29pbmcgdG8gcHV0IG15IGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBtYWN2bGFuX3ZhbGlkYXRlYCwgbmF0dXJhbGx5LCBidXQgYWxzbyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHRvIGdpdmUgdGhlIGZ1enppbmcgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBTbyB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiBpcyBgTUFDVkxBTmAuXG5cblVsdGltYXRlbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcGVybWlzc2lvbiBjaGVjayB3aXRoaW4gYG1hY3ZsYW5fdmFsaWRhdGVgIGlmIHRoZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAgYXR0cmlidXRlIGlzIHNldCB0byBhIHZhbHVlIGV4Y2VlZGluZyB0aGUgZGVmYXVsdC4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtYWN2bGFuIGRyaXZlcidzIG5ldGxpbmsgaW50ZXJmYWNlLiBTaW5jZSBuZXRsaW5rIGlzIHVzZXItc3BhY2UgYWNjZXNzaWJsZSwgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTk4LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjQyOjU0LjU5NzE1ODE5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzU4MDEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBwZXJtaXNzaW9uIGNoZWNrIHRvIGBtYWN2bGFuX3ZhbGlkYXRlYCB3aGVuIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBpcyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjdmxhbiBkcml2ZXIncyBuZXRsaW5rIGludGVyZmFjZSwgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh68t8[1] Phase: Succeeded StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 04:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 04:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2] Phase: Succeeded StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 08:29:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 08:29:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 04:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 04:43:06 +0000 UTC FinishedAt: 2026-07-31 04:43:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowh68t8/series-workflowh68t8-convert-artifact-3972107025/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 04:43:30 +0000 UTC FinishedAt: 2026-07-31 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 04:43:30 +0000 UTC FinishedAt: 2026-07-31 05:06:54 +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:*1ad963c2-8df2-4ea6-965c-4a436433a748,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-workflowh68t8/series-workflowh68t8-convert-artifact-3972107025/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": "86e66d5d-2256-4515-8f79-a0fb4390f147", "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-workflowh68t8/series-workflowh68t8-build-action-4193479871/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 04:43:30 +0000 UTC FinishedAt: 2026-07-31 05:06:44 +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:*1ad963c2-8df2-4ea6-965c-4a436433a748,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-workflowh68t8/series-workflowh68t8-convert-artifact-3972107025/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": "86e66d5d-2256-4515-8f79-a0fb4390f147", "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-workflowh68t8/series-workflowh68t8-build-action-4193479871/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 05:06:54 +0000 UTC FinishedAt: 2026-07-31 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 05:06:54 +0000 UTC FinishedAt: 2026-07-31 05:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 05:06:54 +0000 UTC FinishedAt: 2026-07-31 05:07:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 05:06:54 +0000 UTC FinishedAt: 2026-07-31 05:07:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowh68t8/series-workflowh68t8-convert-artifact-1703103972/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 05:07:04 +0000 UTC FinishedAt: 2026-07-31 05:08:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 05:07:04 +0000 UTC FinishedAt: 2026-07-31 05:08:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*86e66d5d-2256-4515-8f79-a0fb4390f147,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-workflowh68t8/series-workflowh68t8-build-action-4193479871/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-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 05:08:58 +0000 UTC FinishedAt: 2026-07-31 05:08:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 05:08:58 +0000 UTC FinishedAt: 2026-07-31 05:08:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 05:08:58 +0000 UTC FinishedAt: 2026-07-31 05:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 05:08:58 +0000 UTC FinishedAt: 2026-07-31 05:25:25 +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:*1ad963c2-8df2-4ea6-965c-4a436433a748,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-workflowh68t8/series-workflowh68t8-convert-artifact-1703103972/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": "e32f278c-77b4-4de6-949d-a3457fc7e4ff", "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-workflowh68t8/series-workflowh68t8-build-action-1149327216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 05:08:58 +0000 UTC FinishedAt: 2026-07-31 05:25:15 +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:*1ad963c2-8df2-4ea6-965c-4a436433a748,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-workflowh68t8/series-workflowh68t8-convert-artifact-1703103972/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": "e32f278c-77b4-4de6-949d-a3457fc7e4ff", "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-workflowh68t8/series-workflowh68t8-build-action-1149327216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 05:25:25 +0000 UTC FinishedAt: 2026-07-31 05:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 05:25:25 +0000 UTC FinishedAt: 2026-07-31 05:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 05:25:25 +0000 UTC FinishedAt: 2026-07-31 05:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 05:25:25 +0000 UTC FinishedAt: 2026-07-31 05:27:06 +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:*e32f278c-77b4-4de6-949d-a3457fc7e4ff,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-workflowh68t8/series-workflowh68t8-build-action-1149327216/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-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 08:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 08:29:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"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:*86e66d5d-2256-4515-8f79-a0fb4390f147,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e32f278c-77b4-4de6-949d-a3457fc7e4ff,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-workflowh68t8/series-workflowh68t8-build-action-4193479871/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-workflowh68t8/series-workflowh68t8-build-action-1149327216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 05:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 05:27:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"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-workflowh68t8/series-workflowh68t8-convert-artifact-1479484013/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 05:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 05:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 05:27:16 +0000 UTC FinishedAt: 2026-07-31 05:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 05:27:26 +0000 UTC FinishedAt: 2026-07-31 08:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh68t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_validate","macvlan_common_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b93ac873-e55b-4063-bf3f-14a113981586","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 05:27:26 +0000 UTC FinishedAt: 2026-07-31 08:29:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*86e66d5d-2256-4515-8f79-a0fb4390f147,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e32f278c-77b4-4de6-949d-a3457fc7e4ff,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-workflowh68t8/series-workflowh68t8-build-action-4193479871/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-workflowh68t8/series-workflowh68t8-build-action-1149327216/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-workflowh68t8/series-workflowh68t8-convert-artifact-1479484013/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,}