Name: series-workflowjltxd Phase: Succeeded StartedAt: 2026-07-01 09:41:04 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[0] Phase: Succeeded StartedAt: 2026-07-01 09:41:04 +0000 UTC FinishedAt: 2026-07-01 10:16:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 09:41:04 +0000 UTC FinishedAt: 2026-07-01 10:16:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "651203db-99b0-426b-b70e-2f7587d4a601" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_ct_expect_obj_eval", "nft_ct_nat_follow_master" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDssCiAgICAmIzM0O25mdF9jdF9uYXRfZm9sbG93X21hc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIE5BVCBoYW5kbGluZyBsb2dpYyB0byBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucywgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmeWluZyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIwMjZiNmViYjBjM2I2MWViOTczMjYzM2U1NjMyMzU0ZmE2OGY1ZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDEwOjE2OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uMzU4YjkyODdlMTJlODcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5AQCAtMTI5Nyw2ICYjNDM7MTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjtcbiYjNDM7XG4mIzQzO1x0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwmIzM0O25hdC1mb2xsb3ctbWFzdGVyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoZXhwZm4pXG4mIzQzO1x0XHRleHBmbi1cdTAwM2VleHBlY3RmbihjdCwgdGhpcyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuQEAgLTEzNDIsNiAmIzQzOzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHQgICAgICAgICAgcHJpdi1cdTAwM2VsNHByb3RvLCBOVUxMLCBcdTAwMjZwcml2LVx1MDAzZWRwb3J0KTtcbiBcdGV4cC1cdTAwM2V0aW1lb3V0ICYjNDM7PSBwcml2LVx1MDAzZXRpbWVvdXQ7XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO1x0aWYgKGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKSB7XG4mIzQzO1x0XHRleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LVx1MDAzZWRwb3J0O1xuJiM0MztcdFx0ZXhwLVx1MDAzZWRpciA9ICFkaXI7XG4mIzQzO1x0XHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XG4mIzQzO1x0fVxuJiM0MzsjZW5kaWZcbiBcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXG4gXHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcbiBcbkBAIC0xMzc1LDYgJiM0MzsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIH07XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O25mdF9jdC1mb2xsb3ctbWFzdGVyXCYjMzQ7LFxuJiM0MztcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcixcbiYjNDM7fTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICYjNDM7MTQyNSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIFx0ZXJyID0gbmZ0X3JlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycjQ7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiAjZW5kaWZcbiBcdHJldHVybiAwO1xuIFxuQEAgLTE0MjUsNiAmIzQzOzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuJiM0MztcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7I2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMDI2YjZlYmIwYzNiNjFlYjk3MzI2MzNlNTYzMjM1NGZhNjhmNWZhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jCmluZGV4IDAzYTg4Yzc3ZTBmMDI4Li4zNThiOTI4N2UxMmU4NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MztzdGF0aWMgdm9pZCBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqdGhpcykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gKmV4cGZuOwomIzQzOwomIzQzOwlleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoJiMzNDtuYXQtZm9sbG93LW1hc3RlciYjMzQ7KTsKJiM0MzsJaWYgKGV4cGZuKQomIzQzOwkJZXhwZm4tJmd0O2V4cGVjdGZuKGN0LCB0aGlzKTsKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosCiAJCQkJICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTM0Miw2ICYjNDM7MTM1MywxMyBAQCBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosCiAJCSAgICAgICAgICBwcml2LSZndDtsNHByb3RvLCBOVUxMLCAmYW1wO3ByaXYtJmd0O2Rwb3J0KTsKIAlleHAtJmd0O3RpbWVvdXQgJiM0Mzs9IHByaXYtJmd0O3RpbWVvdXQ7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKQomIzQzOwlpZiAoY3QtJmd0O3N0YXR1cyAmYW1wOyBJUFNfTkFUX01BU0spIHsKJiM0MzsJCWV4cC0mZ3Q7c2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LSZndDtkcG9ydDsKJiM0MzsJCWV4cC0mZ3Q7ZGlyID0gIWRpcjsKJiM0MzsJCWV4cC0mZ3Q7ZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7CiYjNDM7CX0KJiM0MzsjZW5kaWYKIAlpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKQogCQlyZWdzLSZndDt2ZXJkaWN0LmNvZGUgPSBORl9EUk9QOwogCkBAIC0xMzc1LDYgJiM0MzsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCiB9OwogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MztzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtuZnRfY3QtZm9sbG93LW1hc3RlciYjMzQ7LAomIzQzOwkuZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIsCiYjNDM7fTsKJiM0MzsjZW5kaWYKJiM0MzsKIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKQogewogCWludCBlcnI7CkBAIC0xNDAwLDYgJiM0MzsxNDI1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpCiAJZXJyID0gbmZ0X3JlZ2lzdGVyX29iaigmYW1wO25mdF9jdF90aW1lb3V0X29ial90eXBlKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJZ290byBlcnI0OwomIzQzOyNlbmRpZgomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcigmYW1wO25mdF9jdF9uYXQpOwogI2VuZGlmCiAJcmV0dXJuIDA7CiAKQEAgLTE0MjUsNiAmIzQzOzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKQogCW5mdF91bnJlZ2lzdGVyX29iaigmYW1wO25mdF9jdF9oZWxwZXJfb2JqX3R5cGUpOwogCW5mdF91bnJlZ2lzdGVyX2V4cHIoJmFtcDtuZnRfbm90cmFja190eXBlKTsKIAluZnRfdW5yZWdpc3Rlcl9leHByKCZhbXA7bmZ0X2N0X3R5cGUpOwomIzQzOwomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl91bnJlZ2lzdGVyKCZhbXA7bmZ0X2N0X25hdCk7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwomIzQzOwluZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveSgmYW1wO25mdF9jdF9uYXQpOwomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsjZW5kaWYKIH0KIAogbW9kdWxlX2luaXQobmZ0X2N0X21vZHVsZV9pbml0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG5mdF9jdC5jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCwgYW5kIHJlZ2lzdGVyaW5nIGl0IGFzIGFuIGBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIHRoaXMgaXMgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlciBmdW5jdGlvbnMsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBzdHVmZiBmb3IgTkFULgoKVGhlIG1haW4gbW9kaWZpY2F0aW9uIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBleHBlY3RhdGlvbiBldmFsdWF0aW9uIGhhcHBlbnMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgY2hhbmdlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCBvbmx5IGludm9rZXMgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBzdGF0dXMgYml0IHNldC4gVGhhdOKAmXMgYSBnb29kIHNpZ24sIGFuZCBtYWtlcyBpdCBjbGVhciBpdCByZWxhdGVzIHRvIE5BVC4KClRoZSB3aG9sZSB0aGluZyBpcyBndWFyZGVkIGJ5IGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKWAsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4gTm93LCBsZXTigJlzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgYXQgcGxheSBoZXJlLiBUaGUgZmlsZSBpcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AsIHRoZSByZWxldmFudCBjb25maWcgaXMgYENPTkZJR19ORl9OQVRgLCBhbmQgdGhlIG1vZHVsZSBpcyBkZWZpbml0ZWx5IGBuZnRfY3RgLiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb25zIGFyZSB0byBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIGFjcm9zcyB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBzZWUgaWYgYENPTkZJR19ORl9OQVRgIG9yIGBuZnRfY3RgIGlzIHVzZWQgZWxzZXdoZXJlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMxMi1cdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfb2JqZWN0X29wcyBuZnRfY3RfZXhwZWN0X29ial9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVx0LnNpemVcdFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM4MjpcdC5ldmFsXHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cdC5pbml0XHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV3IE5ldGZpbHRlciBDb25udHJhY2sgRXhwZWN0YXRpb24gSGFuZGxpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIG5ldGZpbHRlciYjMzk7cyBjb25udHJhY2sgc3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIGV4cGVjdGF0aW9ucyBmb3IgTkFULiBUaGlzIGlzIGltbWVkaWF0ZWx5IG1ha2luZyBtZSB0aGluayAmIzM0O2Z1enppbmcgdGFyZ2V0LiYjMzQ7IEFueXRpbWUgd2Ugc2VlIGNoYW5nZXMgdG8gY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IHdoZXJlIE5BVCBpcyBpbnZvbHZlZCwgaXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciB2dWxuZXJhYmlsaXRpZXMuCgpNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIHN5bWJvbHMuIFRoZXNlIHNvdW5kIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIG9yIGRlY2lzaW9uLW1ha2luZyBwb2ludHMgd2l0aGluIHRoaXMgbmV3IGxvZ2ljLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGV5IG9wZXJhdGUgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZDogYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgYG5mdF9jdC5jYCBpcyBwcm9wZXJseSBjb21waWxlZCBpbiB3aGVuIGBORlRfQ1RgIGlzIGFjdGl2YXRlZC4gVGhlbiwgbGV0JiMzOTtzIHN0YXJ0IHByZXBwaW5nIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBjcmFmdGluZyBzb21lIGluaXRpYWwgdGVzdCBjYXNlcyBjZW50ZXJlZCBhcm91bmQgdGhlc2Ugc3ltYm9scy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdW4gYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9jdFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcdCYjNDM7PSBuZnRfbnVtZ2VuLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEyOm9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZ0X2N0LmNgLiBUaGUgY29uZmlnIHZhcmlhYmxlIGBORlRfQ1RgIGlzIGNsZWFybHkgaW1wb3J0YW50LCBhcyBpdCBzZWVtcyB0byBiZSB0aGUgY29yZSBzZXR0aW5nIGZvciB0aGlzIG1vZHVsZS4gVGhlIHBhdGNoIGV4cGxpY2l0bHkgcmVsaWVzIG9uIGBDT05GSUdfTkZfTkFUYCBhcyB3ZWxsLgoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBhcmUgdG91Y2hlZCBvciBhZGRlZCBpbiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGlzIGJlaW5nIG1vZGlmaWVkLCBhbmQgd2UmIzM5O3ZlIGdvdCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIGFuZCB0aGUgYG5mdF9jdF9uYXRgIHN0cnVjdC4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbW9kdWxlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLCBgbmZ0X2N0X21vZHVsZV9pbml0YCBhbmQgYG5mdF9jdF9tb2R1bGVfZXhpdGAuCgpTbywgdGhlIGtleSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlIGRlZmluaXRlbHkgYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBOb3csIEkmIzM5O20ganVzdCBxdWlja2x5IHRyeWluZyB0byBzZWUgaWYgYE5GX05BVGAgYWxvbmUgaXMgc3VmZmljaWVudCwgb3IgaWYgdGhpcyByZWxpZXMgb24gYSBicm9hZGVyIGNvbm5lY3Rpdml0eSB0cmFja2luZyBmcmFtZXdvcmsg4oCTIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0NPTk5UUkFDS2AgaXMgaW5oZXJlbnRseSBpbXBsaWVkIGJ5IGBORlRfQ1RgLCBhcyBzZWVtcyBsaWtlbHkuIElmIHNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXMgZW5hYmxlZCBhcyB3ZWxsLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GVF9DVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2NgoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiA2ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5BVCBFeHBlY3RhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgaW50cm9kdWNpbmcgbmV3IE5BVCBoYW5kbGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgYE5GVF9DVGAgcmVsaWVzIG9uIGBORl9DT05OVFJBQ0tgLCBzbyB3ZSYjMzk7bGwgbmVlZCBib3RoIGVuYWJsZWQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLCBnaXZlbiB0aGF0IHRoaXMgYWZmZWN0cyBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0uCgpUaGUgcGF0Y2ggc2VlbXMgdG8gaW50cm9kdWNlIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMuIEV4YW1pbmluZyB0aGUgY29kZSwgSSBzZWUgdGhhdCB0aGlzIG5ldyBmdW5jdGlvbiBsZXZlcmFnZXMgYG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWVgLCB3aGljaCBpcyBhIHBhdHRlcm4gdGhhdCBpcyBsaWtlbHkgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvZGUuCgpEaWdnaW5nIGZ1cnRoZXIsIEkgc2VlIHRoYXQgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgTkFUIGxvZ2ljIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgY29ubnRyYWNrIGV4cGVjdGF0aW9uIGV2YWx1YXRpb24uCgpUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgYHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5gIG5hbWVkIGBuZnRfY3RfbmF0YC4gVGhpcyBpcyByZWdpc3RlcmVkIGluIGBuZnRfY3RfbW9kdWxlX2luaXRgIGFuZCB1bnJlZ2lzdGVyZWQgaW4gYG5mdF9jdF9tb2R1bGVfZXhpdGAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2R1bGVzLgoKVGhlIGtleSBwb2ludHMgZm9yIGZ1enppbmcgYXJlIGRlZmluaXRlbHkgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIChiZWNhdXNlIGl0JiMzOTtzIHRoZSBtb2RpZmllZCBmdW5jdGlvbikgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIChiZWNhdXNlIGl0JiMzOTtzIHRoZSBuZXcgZnVuY3Rpb24gYXQgdGhlIGhlYXJ0IG9mIHRoZSBuZXcgbG9naWMpLiBUaGUgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgcmVnaXN0ZXJlZCBhcyBhIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBsaWtlbHkgaG93IGl0IHdpbGwgYmUgcmVhY2hlZCBmcm9tIHdpdGhpbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuCgpUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgc28gaXQmIzM5O3Mgd29ydGggdGhlIGVmZm9ydC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZW5hYmxlZCBib3RoIGBORlRfQ1RgIGFuZCBgTkZfTkFUYCBpbiBvdXIgY29uZmlndXJhdGlvbiBhbmQgZ2V0IHRoZSBmdXp6ZXJzIHJlYWR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORlRfQ1QmIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7LAogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBOQVQgaGFuZGxpbmcgbG9naWMgdG8gbmV0ZmlsdGVyIGNvbm50cmFjayBleHBlY3RhdGlvbnMsIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZnlpbmcgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNi41NDE0NTM3ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI0NzY5NDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNi41NDE0NjIxODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzgwNDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIwMjZiNmViYjBjM2I2MWViOTczMjYzM2U1NjMyMzU0ZmE2OGY1ZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbmluZGV4IDAzYTg4Yzc3ZTBmMDI4Li4zNThiOTI4N2UxMmU4NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbkBAIC0xMjk3LDYgKzEyOTcsMTcgQEAgc3RhdGljIGludCBuZnRfY3RfZXhwZWN0X29ial9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitzdGF0aWMgdm9pZCBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqdGhpcylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjtcXG4rXFxuK1xcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiKTtcXG4rXFx0aWYgKGV4cGZuKVxcbitcXHRcXHRleHBmbi1cXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxcbkBAIC0xMzQyLDYgKzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbiBcXHRcXHQgICAgICAgICAgcHJpdi1cXHUwMDNlbDRwcm90bywgTlVMTCwgXFx1MDAyNnByaXYtXFx1MDAzZWRwb3J0KTtcXG4gXFx0ZXhwLVxcdTAwM2V0aW1lb3V0ICs9IHByaXYtXFx1MDAzZXRpbWVvdXQ7XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRpZiAoY3QtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IElQU19OQVRfTUFTSykge1xcbitcXHRcXHRleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi1cXHUwMDNlZHBvcnQ7XFxuK1xcdFxcdGV4cC1cXHUwMDNlZGlyID0gIWRpcjtcXG4rXFx0XFx0ZXhwLVxcdTAwM2VleHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcjtcXG4rXFx0fVxcbisjZW5kaWZcXG4gXFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMClcXG4gXFx0XFx0cmVncy1cXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcXG4gXFxuQEAgLTEzNzUsNiArMTM5MywxMyBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuIH07XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XFxuK1xcdC5uYW1lID0gXFxcIm5mdF9jdC1mb2xsb3ctbWFzdGVyXFxcIixcXG4rXFx0LmV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyLFxcbit9O1xcbisjZW5kaWZcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE0MDAsNiArMTQyNSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiBcXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFxcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycjQ7XFxuKyNlbmRpZlxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNDI1LDYgKzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxcbiBcXHRuZnRfdW5yZWdpc3Rlcl9vYmooXFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xcbiBcXHRuZnRfdW5yZWdpc3Rlcl9leHByKFxcdTAwMjZuZnRfbm90cmFja190eXBlKTtcXG4gXFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcXHUwMDI2bmZ0X2N0X3R5cGUpO1xcbitcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rI2VuZGlmXFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEwOjE2OjE3LjA1MDA4NjY2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3MzkwNDQyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfZXhwZWN0X29ial9ldmFsXCIsXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIE5BVCBoYW5kbGluZyBsb2dpYyB0byBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucywgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmeWluZyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMDI2YjZlYmIwYzNiNjFlYjk3MzI2MzNlNTYzMjM1NGZhNjhmNWZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uMzU4YjkyODdlMTJlODcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5AQCAtMTI5Nyw2ICsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rc3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4re1xuK1x0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XG4rXG4rXHRleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXCJuYXQtZm9sbG93LW1hc3RlclwiKTtcbitcdGlmIChleHBmbilcbitcdFx0ZXhwZm4tXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xuK31cbisjZW5kaWZcbitcbiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMzQyLDYgKzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHQgICAgICAgICAgcHJpdi1cdTAwM2VsNHByb3RvLCBOVUxMLCBcdTAwMjZwcml2LVx1MDAzZWRwb3J0KTtcbiBcdGV4cC1cdTAwM2V0aW1lb3V0ICs9IHByaXYtXHUwMDNldGltZW91dDtcbiBcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0aWYgKGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKSB7XG4rXHRcdGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCA9IHByaXYtXHUwMDNlZHBvcnQ7XG4rXHRcdGV4cC1cdTAwM2VkaXIgPSAhZGlyO1xuK1x0XHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XG4rXHR9XG4rI2VuZGlmXG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxuIFx0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XG4gXG5AQCAtMTM3NSw2ICsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIH07XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbitzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XG4rXHQubmFtZSA9IFwibmZ0X2N0LWZvbGxvdy1tYXN0ZXJcIixcbitcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3Rlcixcbit9O1xuKyNlbmRpZlxuK1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICsxNDI1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpXG4gXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF90aW1lb3V0X29ial90eXBlKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyNDtcbisjZW5kaWZcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKFx1MDAyNm5mdF9jdF9uYXQpO1xuICNlbmRpZlxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMTQyNSw2ICsxNDUzLDEzIEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBuZnRfY3RfbW9kdWxlX2V4aXQodm9pZClcbiBcdG5mdF91bnJlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfaGVscGVyX29ial90eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X25vdHJhY2tfdHlwZSk7XG4gXHRuZnRfdW5yZWdpc3Rlcl9leHByKFx1MDAyNm5mdF9jdF90eXBlKTtcbitcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2bmZ0X2N0X25hdCk7XG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KFx1MDAyNm5mdF9jdF9uYXQpO1xuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rI2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNy4wNTAwODg5OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIwMDU5NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbmZ0X2N0LmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgcmVnaXN0ZXJpbmcgaXQgYXMgYW4gYG5mX2N0X2hlbHBlcl9leHBlY3RmbmAuIFRoYXQncyBpbnRlcmVzdGluZywgc3VnZ2VzdGluZyB0aGlzIGlzIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXIgZnVuY3Rpb25zLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYgZm9yIE5BVC5cblxuVGhlIG1haW4gbW9kaWZpY2F0aW9uIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBleHBlY3RhdGlvbiBldmFsdWF0aW9uIGhhcHBlbnMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgY2hhbmdlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCBvbmx5IGludm9rZXMgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBzdGF0dXMgYml0IHNldC4gVGhhdOKAmXMgYSBnb29kIHNpZ24sIGFuZCBtYWtlcyBpdCBjbGVhciBpdCByZWxhdGVzIHRvIE5BVC5cblxuVGhlIHdob2xlIHRoaW5nIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpYCwgd2hpY2ggY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldOKAmXMgc2VlIHdoYXQgZWxzZSBtaWdodCBiZSBhdCBwbGF5IGhlcmUuIFRoZSBmaWxlIGlzIGBuZXQvbmV0ZmlsdGVyL25mdF9jdC5jYCwgdGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgQ09ORklHX05GX05BVGAsIGFuZCB0aGUgbW9kdWxlIGlzIGRlZmluaXRlbHkgYG5mdF9jdGAuIFRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbnMgYXJlIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYC5cblxuTGV0J3MgZG8gYSBxdWljayBncmVwIGFjcm9zcyB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBzZWUgaWYgYENPTkZJR19ORl9OQVRgIG9yIGBuZnRfY3RgIGlzIHVzZWQgZWxzZXdoZXJlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSd2ZSBnb3QgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTYyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MjIuMzcwMTUzMjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTI0OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMTAtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMTItXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X29iamVjdF9vcHMgbmZ0X2N0X2V4cGVjdF9vYmpfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVxcdC5zaXplXFx0XFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjEzODI6XFx0LmV2YWxcXHRcXHQ9IG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgzLVxcdC5pbml0XFx0XFx0PSBuZnRfY3RfZXhwZWN0X29ial9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoyMi40NjMwODUxNDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ5Mzk2ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldyBOZXRmaWx0ZXIgQ29ubnRyYWNrIEV4cGVjdGF0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIG5ldGZpbHRlcidzIGNvbm50cmFjayBzeXN0ZW0sIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGl0IGhhbmRsZXMgZXhwZWN0YXRpb25zIGZvciBOQVQuIFRoaXMgaXMgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIFwiZnV6emluZyB0YXJnZXQuXCIgQW55dGltZSB3ZSBzZWUgY2hhbmdlcyB0byBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgd2hlcmUgTkFUIGlzIGludm9sdmVkLCBpdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIHVuY292ZXIgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIHN5bWJvbHMuIFRoZXNlIHNvdW5kIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIG9yIGRlY2lzaW9uLW1ha2luZyBwb2ludHMgd2l0aGluIHRoaXMgbmV3IGxvZ2ljLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGV5IG9wZXJhdGUgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgTkZfTkFUYCBhbmQgYE5GVF9DVGAuIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IGBuZnRfY3QuY2AgaXMgcHJvcGVybHkgY29tcGlsZWQgaW4gd2hlbiBgTkZUX0NUYCBpcyBhY3RpdmF0ZWQuIFRoZW4sIGxldCdzIHN0YXJ0IHByZXBwaW5nIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBjcmFmdGluZyBzb21lIGluaXRpYWwgdGVzdCBjYXNlcyBjZW50ZXJlZCBhcm91bmQgdGhlc2Ugc3ltYm9scy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdW4gYmVnaW5zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MjYuMjEyNDg1MzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzkwMjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfY3RcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMTE9b2JqLSQoQ09ORklHX05GVF9OVU1HRU4pXFx0Kz0gbmZ0X251bWdlbi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX05GVF9DVClcXHRcXHQrPSBuZnRfY3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTEzLW9iai0kKENPTkZJR19ORlRfRkxPV19PRkZMT0FEKVxcdCs9IG5mdF9mbG93X29mZmxvYWQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoyNi4zNjAzOTQ5NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc1MDc2OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZ0X2N0LmNgLiBUaGUgY29uZmlnIHZhcmlhYmxlIGBORlRfQ1RgIGlzIGNsZWFybHkgaW1wb3J0YW50LCBhcyBpdCBzZWVtcyB0byBiZSB0aGUgY29yZSBzZXR0aW5nIGZvciB0aGlzIG1vZHVsZS4gVGhlIHBhdGNoIGV4cGxpY2l0bHkgcmVsaWVzIG9uIGBDT05GSUdfTkZfTkFUYCBhcyB3ZWxsLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGFyZSB0b3VjaGVkIG9yIGFkZGVkIGluIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLiBpdCBsb29rcyBsaWtlIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIHdlJ3ZlIGdvdCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIGFuZCB0aGUgYG5mdF9jdF9uYXRgIHN0cnVjdC4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbW9kdWxlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLCBgbmZ0X2N0X21vZHVsZV9pbml0YCBhbmQgYG5mdF9jdF9tb2R1bGVfZXhpdGAuXG5cblNvLCB0aGUga2V5IGNvbmZpZ3MgSSBuZWVkIHRvIGVuc3VyZSBhcmUgZW5hYmxlZCBhcmUgZGVmaW5pdGVseSBgTkZfTkFUYCBhbmQgYE5GVF9DVGAuIE5vdywgSSdtIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gc2VlIGlmIGBORl9OQVRgIGFsb25lIGlzIHN1ZmZpY2llbnQsIG9yIGlmIHRoaXMgcmVsaWVzIG9uIGEgYnJvYWRlciBjb25uZWN0aXZpdHkgdHJhY2tpbmcgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGlmIGBORl9DT05OVFJBQ0tgIGlzIGluaGVyZW50bHkgaW1wbGllZCBieSBgTkZUX0NUYCwgYXMgc2VlbXMgbGlrZWx5LiBJZiBzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGVuYWJsZWQgYXMgd2VsbC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzAuOTM1NDc0NjMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTcwMjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX0NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00OTItXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzEuMDU1MTgzOTExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MDk1Mzk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgTkFUIEV4cGVjdGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGludHJvZHVjaW5nIG5ldyBOQVQgaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBpdCBsb29rcyBsaWtlIGBORlRfQ1RgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLYCwgc28gd2UnbGwgbmVlZCBib3RoIGVuYWJsZWQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLCBnaXZlbiB0aGF0IHRoaXMgYWZmZWN0cyBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0uXG5cblRoZSBwYXRjaCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzLiBFeGFtaW5pbmcgdGhlIGNvZGUsIEkgc2VlIHRoYXQgdGhpcyBuZXcgZnVuY3Rpb24gbGV2ZXJhZ2VzIGBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lYCwgd2hpY2ggaXMgYSBwYXR0ZXJuIHRoYXQgaXMgbGlrZWx5IGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb2RlLlxuXG5EaWdnaW5nIGZ1cnRoZXIsIEkgc2VlIHRoYXQgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgTkFUIGxvZ2ljIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgY29ubnRyYWNrIGV4cGVjdGF0aW9uIGV2YWx1YXRpb24uXG5cblRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbmAgbmFtZWQgYG5mdF9jdF9uYXRgLiBUaGlzIGlzIHJlZ2lzdGVyZWQgaW4gYG5mdF9jdF9tb2R1bGVfaW5pdGAgYW5kIHVucmVnaXN0ZXJlZCBpbiBgbmZ0X2N0X21vZHVsZV9leGl0YCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1vZHVsZXMuXG5cblRoZSBrZXkgcG9pbnRzIGZvciBmdXp6aW5nIGFyZSBkZWZpbml0ZWx5IGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAoYmVjYXVzZSBpdCdzIHRoZSBtb2RpZmllZCBmdW5jdGlvbikgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIChiZWNhdXNlIGl0J3MgdGhlIG5ldyBmdW5jdGlvbiBhdCB0aGUgaGVhcnQgb2YgdGhlIG5ldyBsb2dpYykuIFRoZSBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyByZWdpc3RlcmVkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBUaGlzIGlzIGxpa2VseSBob3cgaXQgd2lsbCBiZSByZWFjaGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC5cblxuVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHNvIGl0J3Mgd29ydGggdGhlIGVmZm9ydC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3ZlIGVuYWJsZWQgYm90aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgaW4gb3VyIGNvbmZpZ3VyYXRpb24gYW5kIGdldCB0aGUgZnV6emVycyByZWFkeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzkuNjE2MTQxNjg4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTc5MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DVFwiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZ0X2N0X2V4cGVjdF9vYmpfZXZhbFwiLFxuICAgIFwibmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBOQVQgaGFuZGxpbmcgbG9naWMgdG8gbmV0ZmlsdGVyIGNvbm50cmFjayBleHBlY3RhdGlvbnMsIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZnlpbmcgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjltxd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 09:41:04 +0000 UTC FinishedAt: 2026-07-01 10:16:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "651203db-99b0-426b-b70e-2f7587d4a601" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_ct_expect_obj_eval", "nft_ct_nat_follow_master" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDssCiAgICAmIzM0O25mdF9jdF9uYXRfZm9sbG93X21hc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIE5BVCBoYW5kbGluZyBsb2dpYyB0byBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucywgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmeWluZyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIwMjZiNmViYjBjM2I2MWViOTczMjYzM2U1NjMyMzU0ZmE2OGY1ZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDEwOjE2OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uMzU4YjkyODdlMTJlODcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5AQCAtMTI5Nyw2ICYjNDM7MTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjtcbiYjNDM7XG4mIzQzO1x0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwmIzM0O25hdC1mb2xsb3ctbWFzdGVyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoZXhwZm4pXG4mIzQzO1x0XHRleHBmbi1cdTAwM2VleHBlY3RmbihjdCwgdGhpcyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuQEAgLTEzNDIsNiAmIzQzOzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHQgICAgICAgICAgcHJpdi1cdTAwM2VsNHByb3RvLCBOVUxMLCBcdTAwMjZwcml2LVx1MDAzZWRwb3J0KTtcbiBcdGV4cC1cdTAwM2V0aW1lb3V0ICYjNDM7PSBwcml2LVx1MDAzZXRpbWVvdXQ7XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO1x0aWYgKGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKSB7XG4mIzQzO1x0XHRleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LVx1MDAzZWRwb3J0O1xuJiM0MztcdFx0ZXhwLVx1MDAzZWRpciA9ICFkaXI7XG4mIzQzO1x0XHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XG4mIzQzO1x0fVxuJiM0MzsjZW5kaWZcbiBcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXG4gXHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcbiBcbkBAIC0xMzc1LDYgJiM0MzsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIH07XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O25mdF9jdC1mb2xsb3ctbWFzdGVyXCYjMzQ7LFxuJiM0MztcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcixcbiYjNDM7fTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICYjNDM7MTQyNSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIFx0ZXJyID0gbmZ0X3JlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycjQ7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiAjZW5kaWZcbiBcdHJldHVybiAwO1xuIFxuQEAgLTE0MjUsNiAmIzQzOzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuJiM0MztcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7I2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMDI2YjZlYmIwYzNiNjFlYjk3MzI2MzNlNTYzMjM1NGZhNjhmNWZhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jCmluZGV4IDAzYTg4Yzc3ZTBmMDI4Li4zNThiOTI4N2UxMmU4NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MztzdGF0aWMgdm9pZCBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqdGhpcykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gKmV4cGZuOwomIzQzOwomIzQzOwlleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoJiMzNDtuYXQtZm9sbG93LW1hc3RlciYjMzQ7KTsKJiM0MzsJaWYgKGV4cGZuKQomIzQzOwkJZXhwZm4tJmd0O2V4cGVjdGZuKGN0LCB0aGlzKTsKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosCiAJCQkJICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTM0Miw2ICYjNDM7MTM1MywxMyBAQCBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosCiAJCSAgICAgICAgICBwcml2LSZndDtsNHByb3RvLCBOVUxMLCAmYW1wO3ByaXYtJmd0O2Rwb3J0KTsKIAlleHAtJmd0O3RpbWVvdXQgJiM0Mzs9IHByaXYtJmd0O3RpbWVvdXQ7CiAKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKQomIzQzOwlpZiAoY3QtJmd0O3N0YXR1cyAmYW1wOyBJUFNfTkFUX01BU0spIHsKJiM0MzsJCWV4cC0mZ3Q7c2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LSZndDtkcG9ydDsKJiM0MzsJCWV4cC0mZ3Q7ZGlyID0gIWRpcjsKJiM0MzsJCWV4cC0mZ3Q7ZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7CiYjNDM7CX0KJiM0MzsjZW5kaWYKIAlpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKQogCQlyZWdzLSZndDt2ZXJkaWN0LmNvZGUgPSBORl9EUk9QOwogCkBAIC0xMzc1LDYgJiM0MzsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCiB9OwogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MztzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7CiYjNDM7CS5uYW1lID0gJiMzNDtuZnRfY3QtZm9sbG93LW1hc3RlciYjMzQ7LAomIzQzOwkuZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIsCiYjNDM7fTsKJiM0MzsjZW5kaWYKJiM0MzsKIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKQogewogCWludCBlcnI7CkBAIC0xNDAwLDYgJiM0MzsxNDI1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpCiAJZXJyID0gbmZ0X3JlZ2lzdGVyX29iaigmYW1wO25mdF9jdF90aW1lb3V0X29ial90eXBlKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJZ290byBlcnI0OwomIzQzOyNlbmRpZgomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcigmYW1wO25mdF9jdF9uYXQpOwogI2VuZGlmCiAJcmV0dXJuIDA7CiAKQEAgLTE0MjUsNiAmIzQzOzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKQogCW5mdF91bnJlZ2lzdGVyX29iaigmYW1wO25mdF9jdF9oZWxwZXJfb2JqX3R5cGUpOwogCW5mdF91bnJlZ2lzdGVyX2V4cHIoJmFtcDtuZnRfbm90cmFja190eXBlKTsKIAluZnRfdW5yZWdpc3Rlcl9leHByKCZhbXA7bmZ0X2N0X3R5cGUpOwomIzQzOwomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl91bnJlZ2lzdGVyKCZhbXA7bmZ0X2N0X25hdCk7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwomIzQzOwluZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveSgmYW1wO25mdF9jdF9uYXQpOwomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsjZW5kaWYKIH0KIAogbW9kdWxlX2luaXQobmZ0X2N0X21vZHVsZV9pbml0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG5mdF9jdC5jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCwgYW5kIHJlZ2lzdGVyaW5nIGl0IGFzIGFuIGBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIHRoaXMgaXMgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlciBmdW5jdGlvbnMsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBzdHVmZiBmb3IgTkFULgoKVGhlIG1haW4gbW9kaWZpY2F0aW9uIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBleHBlY3RhdGlvbiBldmFsdWF0aW9uIGhhcHBlbnMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgY2hhbmdlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCBvbmx5IGludm9rZXMgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBzdGF0dXMgYml0IHNldC4gVGhhdOKAmXMgYSBnb29kIHNpZ24sIGFuZCBtYWtlcyBpdCBjbGVhciBpdCByZWxhdGVzIHRvIE5BVC4KClRoZSB3aG9sZSB0aGluZyBpcyBndWFyZGVkIGJ5IGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKWAsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4gTm93LCBsZXTigJlzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgYXQgcGxheSBoZXJlLiBUaGUgZmlsZSBpcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AsIHRoZSByZWxldmFudCBjb25maWcgaXMgYENPTkZJR19ORl9OQVRgLCBhbmQgdGhlIG1vZHVsZSBpcyBkZWZpbml0ZWx5IGBuZnRfY3RgLiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb25zIGFyZSB0byBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIGFjcm9zcyB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBzZWUgaWYgYENPTkZJR19ORl9OQVRgIG9yIGBuZnRfY3RgIGlzIHVzZWQgZWxzZXdoZXJlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMxMi1cdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfb2JqZWN0X29wcyBuZnRfY3RfZXhwZWN0X29ial9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVx0LnNpemVcdFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM4MjpcdC5ldmFsXHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cdC5pbml0XHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV3IE5ldGZpbHRlciBDb25udHJhY2sgRXhwZWN0YXRpb24gSGFuZGxpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIG5ldGZpbHRlciYjMzk7cyBjb25udHJhY2sgc3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIGV4cGVjdGF0aW9ucyBmb3IgTkFULiBUaGlzIGlzIGltbWVkaWF0ZWx5IG1ha2luZyBtZSB0aGluayAmIzM0O2Z1enppbmcgdGFyZ2V0LiYjMzQ7IEFueXRpbWUgd2Ugc2VlIGNoYW5nZXMgdG8gY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IHdoZXJlIE5BVCBpcyBpbnZvbHZlZCwgaXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgdG8gdW5jb3ZlciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciB2dWxuZXJhYmlsaXRpZXMuCgpNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIHN5bWJvbHMuIFRoZXNlIHNvdW5kIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIG9yIGRlY2lzaW9uLW1ha2luZyBwb2ludHMgd2l0aGluIHRoaXMgbmV3IGxvZ2ljLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGV5IG9wZXJhdGUgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZDogYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgYG5mdF9jdC5jYCBpcyBwcm9wZXJseSBjb21waWxlZCBpbiB3aGVuIGBORlRfQ1RgIGlzIGFjdGl2YXRlZC4gVGhlbiwgbGV0JiMzOTtzIHN0YXJ0IHByZXBwaW5nIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBjcmFmdGluZyBzb21lIGluaXRpYWwgdGVzdCBjYXNlcyBjZW50ZXJlZCBhcm91bmQgdGhlc2Ugc3ltYm9scy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdW4gYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9jdFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcdCYjNDM7PSBuZnRfbnVtZ2VuLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEyOm9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZ0X2N0LmNgLiBUaGUgY29uZmlnIHZhcmlhYmxlIGBORlRfQ1RgIGlzIGNsZWFybHkgaW1wb3J0YW50LCBhcyBpdCBzZWVtcyB0byBiZSB0aGUgY29yZSBzZXR0aW5nIGZvciB0aGlzIG1vZHVsZS4gVGhlIHBhdGNoIGV4cGxpY2l0bHkgcmVsaWVzIG9uIGBDT05GSUdfTkZfTkFUYCBhcyB3ZWxsLgoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBhcmUgdG91Y2hlZCBvciBhZGRlZCBpbiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGlzIGJlaW5nIG1vZGlmaWVkLCBhbmQgd2UmIzM5O3ZlIGdvdCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIGFuZCB0aGUgYG5mdF9jdF9uYXRgIHN0cnVjdC4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbW9kdWxlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLCBgbmZ0X2N0X21vZHVsZV9pbml0YCBhbmQgYG5mdF9jdF9tb2R1bGVfZXhpdGAuCgpTbywgdGhlIGtleSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlIGRlZmluaXRlbHkgYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBOb3csIEkmIzM5O20ganVzdCBxdWlja2x5IHRyeWluZyB0byBzZWUgaWYgYE5GX05BVGAgYWxvbmUgaXMgc3VmZmljaWVudCwgb3IgaWYgdGhpcyByZWxpZXMgb24gYSBicm9hZGVyIGNvbm5lY3Rpdml0eSB0cmFja2luZyBmcmFtZXdvcmsg4oCTIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0NPTk5UUkFDS2AgaXMgaW5oZXJlbnRseSBpbXBsaWVkIGJ5IGBORlRfQ1RgLCBhcyBzZWVtcyBsaWtlbHkuIElmIHNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXMgZW5hYmxlZCBhcyB3ZWxsLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GVF9DVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2NgoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiA2ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE5BVCBFeHBlY3RhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgaW50cm9kdWNpbmcgbmV3IE5BVCBoYW5kbGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgYE5GVF9DVGAgcmVsaWVzIG9uIGBORl9DT05OVFJBQ0tgLCBzbyB3ZSYjMzk7bGwgbmVlZCBib3RoIGVuYWJsZWQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLCBnaXZlbiB0aGF0IHRoaXMgYWZmZWN0cyBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0uCgpUaGUgcGF0Y2ggc2VlbXMgdG8gaW50cm9kdWNlIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMuIEV4YW1pbmluZyB0aGUgY29kZSwgSSBzZWUgdGhhdCB0aGlzIG5ldyBmdW5jdGlvbiBsZXZlcmFnZXMgYG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWVgLCB3aGljaCBpcyBhIHBhdHRlcm4gdGhhdCBpcyBsaWtlbHkgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvZGUuCgpEaWdnaW5nIGZ1cnRoZXIsIEkgc2VlIHRoYXQgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgTkFUIGxvZ2ljIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgY29ubnRyYWNrIGV4cGVjdGF0aW9uIGV2YWx1YXRpb24uCgpUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgYHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5gIG5hbWVkIGBuZnRfY3RfbmF0YC4gVGhpcyBpcyByZWdpc3RlcmVkIGluIGBuZnRfY3RfbW9kdWxlX2luaXRgIGFuZCB1bnJlZ2lzdGVyZWQgaW4gYG5mdF9jdF9tb2R1bGVfZXhpdGAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2R1bGVzLgoKVGhlIGtleSBwb2ludHMgZm9yIGZ1enppbmcgYXJlIGRlZmluaXRlbHkgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIChiZWNhdXNlIGl0JiMzOTtzIHRoZSBtb2RpZmllZCBmdW5jdGlvbikgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIChiZWNhdXNlIGl0JiMzOTtzIHRoZSBuZXcgZnVuY3Rpb24gYXQgdGhlIGhlYXJ0IG9mIHRoZSBuZXcgbG9naWMpLiBUaGUgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgcmVnaXN0ZXJlZCBhcyBhIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBsaWtlbHkgaG93IGl0IHdpbGwgYmUgcmVhY2hlZCBmcm9tIHdpdGhpbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuCgpUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgc28gaXQmIzM5O3Mgd29ydGggdGhlIGVmZm9ydC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZW5hYmxlZCBib3RoIGBORlRfQ1RgIGFuZCBgTkZfTkFUYCBpbiBvdXIgY29uZmlndXJhdGlvbiBhbmQgZ2V0IHRoZSBmdXp6ZXJzIHJlYWR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORlRfQ1QmIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7LAogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBOQVQgaGFuZGxpbmcgbG9naWMgdG8gbmV0ZmlsdGVyIGNvbm50cmFjayBleHBlY3RhdGlvbnMsIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZnlpbmcgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNi41NDE0NTM3ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI0NzY5NDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNi41NDE0NjIxODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzgwNDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIwMjZiNmViYjBjM2I2MWViOTczMjYzM2U1NjMyMzU0ZmE2OGY1ZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbmluZGV4IDAzYTg4Yzc3ZTBmMDI4Li4zNThiOTI4N2UxMmU4NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbkBAIC0xMjk3LDYgKzEyOTcsMTcgQEAgc3RhdGljIGludCBuZnRfY3RfZXhwZWN0X29ial9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitzdGF0aWMgdm9pZCBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqdGhpcylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjtcXG4rXFxuK1xcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiKTtcXG4rXFx0aWYgKGV4cGZuKVxcbitcXHRcXHRleHBmbi1cXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxcbkBAIC0xMzQyLDYgKzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbiBcXHRcXHQgICAgICAgICAgcHJpdi1cXHUwMDNlbDRwcm90bywgTlVMTCwgXFx1MDAyNnByaXYtXFx1MDAzZWRwb3J0KTtcXG4gXFx0ZXhwLVxcdTAwM2V0aW1lb3V0ICs9IHByaXYtXFx1MDAzZXRpbWVvdXQ7XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRpZiAoY3QtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IElQU19OQVRfTUFTSykge1xcbitcXHRcXHRleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi1cXHUwMDNlZHBvcnQ7XFxuK1xcdFxcdGV4cC1cXHUwMDNlZGlyID0gIWRpcjtcXG4rXFx0XFx0ZXhwLVxcdTAwM2VleHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcjtcXG4rXFx0fVxcbisjZW5kaWZcXG4gXFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMClcXG4gXFx0XFx0cmVncy1cXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcXG4gXFxuQEAgLTEzNzUsNiArMTM5MywxMyBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuIH07XFxuIFxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XFxuK1xcdC5uYW1lID0gXFxcIm5mdF9jdC1mb2xsb3ctbWFzdGVyXFxcIixcXG4rXFx0LmV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyLFxcbit9O1xcbisjZW5kaWZcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE0MDAsNiArMTQyNSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiBcXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFxcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycjQ7XFxuKyNlbmRpZlxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNDI1LDYgKzE0NTMsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxcbiBcXHRuZnRfdW5yZWdpc3Rlcl9vYmooXFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xcbiBcXHRuZnRfdW5yZWdpc3Rlcl9leHByKFxcdTAwMjZuZnRfbm90cmFja190eXBlKTtcXG4gXFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcXHUwMDI2bmZ0X2N0X3R5cGUpO1xcbitcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rI2VuZGlmXFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDEwOjE2OjE3LjA1MDA4NjY2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3MzkwNDQyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfZXhwZWN0X29ial9ldmFsXCIsXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIE5BVCBoYW5kbGluZyBsb2dpYyB0byBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucywgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmeWluZyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMDI2YjZlYmIwYzNiNjFlYjk3MzI2MzNlNTYzMjM1NGZhNjhmNWZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxMDoxNjoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uMzU4YjkyODdlMTJlODcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jXG5AQCAtMTI5Nyw2ICsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rc3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4re1xuK1x0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XG4rXG4rXHRleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXCJuYXQtZm9sbG93LW1hc3RlclwiKTtcbitcdGlmIChleHBmbilcbitcdFx0ZXhwZm4tXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xuK31cbisjZW5kaWZcbitcbiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMzQyLDYgKzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHQgICAgICAgICAgcHJpdi1cdTAwM2VsNHByb3RvLCBOVUxMLCBcdTAwMjZwcml2LVx1MDAzZWRwb3J0KTtcbiBcdGV4cC1cdTAwM2V0aW1lb3V0ICs9IHByaXYtXHUwMDNldGltZW91dDtcbiBcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0aWYgKGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKSB7XG4rXHRcdGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCA9IHByaXYtXHUwMDNlZHBvcnQ7XG4rXHRcdGV4cC1cdTAwM2VkaXIgPSAhZGlyO1xuK1x0XHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XG4rXHR9XG4rI2VuZGlmXG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxuIFx0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XG4gXG5AQCAtMTM3NSw2ICsxMzkzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbmZ0X29iamVjdF90eXBlIG5mdF9jdF9leHBlY3Rfb2JqX3R5cGUgX19yZWFkX21vc3RseSA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIH07XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbitzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XG4rXHQubmFtZSA9IFwibmZ0X2N0LWZvbGxvdy1tYXN0ZXJcIixcbitcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3Rlcixcbit9O1xuKyNlbmRpZlxuK1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICsxNDI1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpXG4gXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF90aW1lb3V0X29ial90eXBlKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyNDtcbisjZW5kaWZcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKFx1MDAyNm5mdF9jdF9uYXQpO1xuICNlbmRpZlxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMTQyNSw2ICsxNDUzLDEzIEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBuZnRfY3RfbW9kdWxlX2V4aXQodm9pZClcbiBcdG5mdF91bnJlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfaGVscGVyX29ial90eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X25vdHJhY2tfdHlwZSk7XG4gXHRuZnRfdW5yZWdpc3Rlcl9leHByKFx1MDAyNm5mdF9jdF90eXBlKTtcbitcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2bmZ0X2N0X25hdCk7XG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KFx1MDAyNm5mdF9jdF9uYXQpO1xuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rI2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoxNy4wNTAwODg5OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIwMDU5NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbmZ0X2N0LmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L25ldGZpbHRlci9uZnRfY3QuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgcmVnaXN0ZXJpbmcgaXQgYXMgYW4gYG5mX2N0X2hlbHBlcl9leHBlY3RmbmAuIFRoYXQncyBpbnRlcmVzdGluZywgc3VnZ2VzdGluZyB0aGlzIGlzIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXIgZnVuY3Rpb25zLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYgZm9yIE5BVC5cblxuVGhlIG1haW4gbW9kaWZpY2F0aW9uIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBleHBlY3RhdGlvbiBldmFsdWF0aW9uIGhhcHBlbnMuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgY2hhbmdlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCBvbmx5IGludm9rZXMgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBzdGF0dXMgYml0IHNldC4gVGhhdOKAmXMgYSBnb29kIHNpZ24sIGFuZCBtYWtlcyBpdCBjbGVhciBpdCByZWxhdGVzIHRvIE5BVC5cblxuVGhlIHdob2xlIHRoaW5nIGlzIGd1YXJkZWQgYnkgYCNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpYCwgd2hpY2ggY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldOKAmXMgc2VlIHdoYXQgZWxzZSBtaWdodCBiZSBhdCBwbGF5IGhlcmUuIFRoZSBmaWxlIGlzIGBuZXQvbmV0ZmlsdGVyL25mdF9jdC5jYCwgdGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgQ09ORklHX05GX05BVGAsIGFuZCB0aGUgbW9kdWxlIGlzIGRlZmluaXRlbHkgYG5mdF9jdGAuIFRoZSBwcmltYXJ5IG1vZGlmaWNhdGlvbnMgYXJlIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYC5cblxuTGV0J3MgZG8gYSBxdWljayBncmVwIGFjcm9zcyB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBzZWUgaWYgYENPTkZJR19ORl9OQVRgIG9yIGBuZnRfY3RgIGlzIHVzZWQgZWxzZXdoZXJlLCBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSd2ZSBnb3QgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTYyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MjIuMzcwMTUzMjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTI0OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMTAtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMTItXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X29iamVjdF9vcHMgbmZ0X2N0X2V4cGVjdF9vYmpfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVxcdC5zaXplXFx0XFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjEzODI6XFx0LmV2YWxcXHRcXHQ9IG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgzLVxcdC5pbml0XFx0XFx0PSBuZnRfY3RfZXhwZWN0X29ial9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoyMi40NjMwODUxNDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ5Mzk2ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldyBOZXRmaWx0ZXIgQ29ubnRyYWNrIEV4cGVjdGF0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd2l0aGluIG5ldGZpbHRlcidzIGNvbm50cmFjayBzeXN0ZW0sIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGl0IGhhbmRsZXMgZXhwZWN0YXRpb25zIGZvciBOQVQuIFRoaXMgaXMgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIFwiZnV6emluZyB0YXJnZXQuXCIgQW55dGltZSB3ZSBzZWUgY2hhbmdlcyB0byBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgd2hlcmUgTkFUIGlzIGludm9sdmVkLCBpdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIHVuY292ZXIgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIHN5bWJvbHMuIFRoZXNlIHNvdW5kIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIG9yIGRlY2lzaW9uLW1ha2luZyBwb2ludHMgd2l0aGluIHRoaXMgbmV3IGxvZ2ljLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGV5IG9wZXJhdGUgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgTkZfTkFUYCBhbmQgYE5GVF9DVGAuIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IGBuZnRfY3QuY2AgaXMgcHJvcGVybHkgY29tcGlsZWQgaW4gd2hlbiBgTkZUX0NUYCBpcyBhY3RpdmF0ZWQuIFRoZW4sIGxldCdzIHN0YXJ0IHByZXBwaW5nIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBjcmFmdGluZyBzb21lIGluaXRpYWwgdGVzdCBjYXNlcyBjZW50ZXJlZCBhcm91bmQgdGhlc2Ugc3ltYm9scy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBmdW4gYmVnaW5zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MjYuMjEyNDg1MzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzkwMjI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfY3RcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMTE9b2JqLSQoQ09ORklHX05GVF9OVU1HRU4pXFx0Kz0gbmZ0X251bWdlbi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX05GVF9DVClcXHRcXHQrPSBuZnRfY3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTEzLW9iai0kKENPTkZJR19ORlRfRkxPV19PRkZMT0FEKVxcdCs9IG5mdF9mbG93X29mZmxvYWQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMDoxNjoyNi4zNjAzOTQ5NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc1MDc2OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmZ0X2N0LmNgLiBUaGUgY29uZmlnIHZhcmlhYmxlIGBORlRfQ1RgIGlzIGNsZWFybHkgaW1wb3J0YW50LCBhcyBpdCBzZWVtcyB0byBiZSB0aGUgY29yZSBzZXR0aW5nIGZvciB0aGlzIG1vZHVsZS4gVGhlIHBhdGNoIGV4cGxpY2l0bHkgcmVsaWVzIG9uIGBDT05GSUdfTkZfTkFUYCBhcyB3ZWxsLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGFyZSB0b3VjaGVkIG9yIGFkZGVkIGluIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLiBpdCBsb29rcyBsaWtlIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIHdlJ3ZlIGdvdCB0aGUgYWRkaXRpb24gb2YgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIGFuZCB0aGUgYG5mdF9jdF9uYXRgIHN0cnVjdC4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbW9kdWxlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLCBgbmZ0X2N0X21vZHVsZV9pbml0YCBhbmQgYG5mdF9jdF9tb2R1bGVfZXhpdGAuXG5cblNvLCB0aGUga2V5IGNvbmZpZ3MgSSBuZWVkIHRvIGVuc3VyZSBhcmUgZW5hYmxlZCBhcmUgZGVmaW5pdGVseSBgTkZfTkFUYCBhbmQgYE5GVF9DVGAuIE5vdywgSSdtIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gc2VlIGlmIGBORl9OQVRgIGFsb25lIGlzIHN1ZmZpY2llbnQsIG9yIGlmIHRoaXMgcmVsaWVzIG9uIGEgYnJvYWRlciBjb25uZWN0aXZpdHkgdHJhY2tpbmcgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGlmIGBORl9DT05OVFJBQ0tgIGlzIGluaGVyZW50bHkgaW1wbGllZCBieSBgTkZUX0NUYCwgYXMgc2VlbXMgbGlrZWx5LiBJZiBzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGVuYWJsZWQgYXMgd2VsbC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzAuOTM1NDc0NjMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTcwMjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX0NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00OTItXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzEuMDU1MTgzOTExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MDk1Mzk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgTkFUIEV4cGVjdGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGludHJvZHVjaW5nIG5ldyBOQVQgaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV4cGVjdGF0aW9ucy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBpdCBsb29rcyBsaWtlIGBORlRfQ1RgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLYCwgc28gd2UnbGwgbmVlZCBib3RoIGVuYWJsZWQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLCBnaXZlbiB0aGF0IHRoaXMgYWZmZWN0cyBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0uXG5cblRoZSBwYXRjaCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzLiBFeGFtaW5pbmcgdGhlIGNvZGUsIEkgc2VlIHRoYXQgdGhpcyBuZXcgZnVuY3Rpb24gbGV2ZXJhZ2VzIGBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lYCwgd2hpY2ggaXMgYSBwYXR0ZXJuIHRoYXQgaXMgbGlrZWx5IGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb2RlLlxuXG5EaWdnaW5nIGZ1cnRoZXIsIEkgc2VlIHRoYXQgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyB3aGVyZSB0aGUgTkFUIGxvZ2ljIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgY29ubnRyYWNrIGV4cGVjdGF0aW9uIGV2YWx1YXRpb24uXG5cblRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbmAgbmFtZWQgYG5mdF9jdF9uYXRgLiBUaGlzIGlzIHJlZ2lzdGVyZWQgaW4gYG5mdF9jdF9tb2R1bGVfaW5pdGAgYW5kIHVucmVnaXN0ZXJlZCBpbiBgbmZ0X2N0X21vZHVsZV9leGl0YCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1vZHVsZXMuXG5cblRoZSBrZXkgcG9pbnRzIGZvciBmdXp6aW5nIGFyZSBkZWZpbml0ZWx5IGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAoYmVjYXVzZSBpdCdzIHRoZSBtb2RpZmllZCBmdW5jdGlvbikgYW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIChiZWNhdXNlIGl0J3MgdGhlIG5ldyBmdW5jdGlvbiBhdCB0aGUgaGVhcnQgb2YgdGhlIG5ldyBsb2dpYykuIFRoZSBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyByZWdpc3RlcmVkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBUaGlzIGlzIGxpa2VseSBob3cgaXQgd2lsbCBiZSByZWFjaGVkIGZyb20gd2l0aGluIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC5cblxuVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHNvIGl0J3Mgd29ydGggdGhlIGVmZm9ydC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3ZlIGVuYWJsZWQgYm90aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgaW4gb3VyIGNvbmZpZ3VyYXRpb24gYW5kIGdldCB0aGUgZnV6emVycyByZWFkeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTA6MTY6MzkuNjE2MTQxNjg4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTc5MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTkFUIGhhbmRsaW5nIGxvZ2ljIHRvIG5ldGZpbHRlciBjb25udHJhY2sgZXhwZWN0YXRpb25zLCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZ5aW5nIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DVFwiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZ0X2N0X2V4cGVjdF9vYmpfZXZhbFwiLFxuICAgIFwibmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBOQVQgaGFuZGxpbmcgbG9naWMgdG8gbmV0ZmlsdGVyIGNvbm50cmFjayBleHBlY3RhdGlvbnMsIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZnlpbmcgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjltxd[1] Phase: Succeeded StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 10:16:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 10:16:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2] Phase: Succeeded StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 10:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 10:16:51 +0000 UTC FinishedAt: 2026-07-01 10:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjltxd/series-workflowjltxd-convert-artifact-1788187291/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 10:17:01 +0000 UTC FinishedAt: 2026-07-01 10:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 10:17:01 +0000 UTC FinishedAt: 2026-07-01 10:39:39 +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:*be99b1de-246a-4b53-93a6-638642cf6923,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-workflowjltxd/series-workflowjltxd-convert-artifact-1788187291/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": "7bb697a1-e939-429b-a754-957bbac80b43", "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-workflowjltxd/series-workflowjltxd-build-action-2076909273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 10:17:01 +0000 UTC FinishedAt: 2026-07-01 10:39:29 +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:*be99b1de-246a-4b53-93a6-638642cf6923,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-workflowjltxd/series-workflowjltxd-convert-artifact-1788187291/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": "7bb697a1-e939-429b-a754-957bbac80b43", "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-workflowjltxd/series-workflowjltxd-build-action-2076909273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 10:39:39 +0000 UTC FinishedAt: 2026-07-01 10:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 10:39:39 +0000 UTC FinishedAt: 2026-07-01 10:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 10:39:39 +0000 UTC FinishedAt: 2026-07-01 10:39:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 10:39:39 +0000 UTC FinishedAt: 2026-07-01 10:39:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjltxd/series-workflowjltxd-convert-artifact-657809906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 10:39:59 +0000 UTC FinishedAt: 2026-07-01 10:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 10:39:59 +0000 UTC FinishedAt: 2026-07-01 10:41:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7bb697a1-e939-429b-a754-957bbac80b43,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-workflowjltxd/series-workflowjltxd-build-action-2076909273/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-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 10:42:06 +0000 UTC FinishedAt: 2026-07-01 10:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 10:42:06 +0000 UTC FinishedAt: 2026-07-01 10:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 10:42:06 +0000 UTC FinishedAt: 2026-07-01 11:07:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 10:42:06 +0000 UTC FinishedAt: 2026-07-01 11:07:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*be99b1de-246a-4b53-93a6-638642cf6923,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-workflowjltxd/series-workflowjltxd-convert-artifact-657809906/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": "8deddbfb-2a41-4eab-a6a9-183210f98702", "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-workflowjltxd/series-workflowjltxd-build-action-1323524486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 10:42:06 +0000 UTC FinishedAt: 2026-07-01 11:05:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*be99b1de-246a-4b53-93a6-638642cf6923,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-workflowjltxd/series-workflowjltxd-convert-artifact-657809906/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": "8deddbfb-2a41-4eab-a6a9-183210f98702", "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-workflowjltxd/series-workflowjltxd-build-action-1323524486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 11:07:05 +0000 UTC FinishedAt: 2026-07-01 11:07:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 11:07:05 +0000 UTC FinishedAt: 2026-07-01 11:07:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 11:07:05 +0000 UTC FinishedAt: 2026-07-01 11:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 11:07:05 +0000 UTC FinishedAt: 2026-07-01 11:08:57 +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:*8deddbfb-2a41-4eab-a6a9-183210f98702,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-workflowjltxd/series-workflowjltxd-build-action-1323524486/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-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +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":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"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:*7bb697a1-e939-429b-a754-957bbac80b43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8deddbfb-2a41-4eab-a6a9-183210f98702,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-workflowjltxd/series-workflowjltxd-build-action-2076909273/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-workflowjltxd/series-workflowjltxd-build-action-1323524486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 11:10:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 11:10:01 +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":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"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-workflowjltxd/series-workflowjltxd-convert-artifact-3320390215/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 11:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 11:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 11:09:06 +0000 UTC FinishedAt: 2026-07-01 11:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 11:10:34 +0000 UTC FinishedAt: 2026-07-01 14:11:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjltxd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_expect_obj_eval","nft_ct_nat_follow_master"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"651203db-99b0-426b-b70e-2f7587d4a601","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 11:10:34 +0000 UTC FinishedAt: 2026-07-01 14:11:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7bb697a1-e939-429b-a754-957bbac80b43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8deddbfb-2a41-4eab-a6a9-183210f98702,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-workflowjltxd/series-workflowjltxd-build-action-2076909273/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-workflowjltxd/series-workflowjltxd-build-action-1323524486/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-workflowjltxd/series-workflowjltxd-convert-artifact-3320390215/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,}