Name: series-workflowmkc62 Phase: Succeeded StartedAt: 2026-07-08 01:28:45 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[0] Phase: Succeeded StartedAt: 2026-07-08 01:28:45 +0000 UTC FinishedAt: 2026-07-08 01:52:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 01:28:45 +0000 UTC FinishedAt: 2026-07-08 01:52:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET_SOCK_MSG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET_SOCK_MSG" ], "series_id": "9e508079-79f1-4aa2-a0e9-4836e63eaeb4" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O05FVF9TT0NLX01TRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNTA5OWJjN2RmNmFlODg1Mzc2YzhmMGMyYzg3MTU4N2VmODMyNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwMTo1MTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5hMDAxYjFmZmY1NzhhOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMzM0LDYgJiM0MzszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuIFxuIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiB7XG4mIzQzO1x0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcbiBcdGJvb2wgc2xvdztcbiBcbiBcdGlmIChjbWQgIT0gU0lPQ0lOUSlcbkBAIC0zNDQsNyAmIzQzOzM0NSwyMCBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcbi1cdCprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7XG4mIzQzO1x0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuJiM0MztcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XG4mIzQzO1x0XHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbiYjNDM7XHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG4mIzQzO1x0fVxuJiM0MztcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbiYjNDM7XHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cbiYjNDM7XHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXG4mIzQzO1x0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcbiYjNDM7XHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QgXHUwMDI2XHUwMDI2ICFwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdClcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTUwOTliYzdkZjZhZTg4NTM3NmM4ZjBjMmM4NzE1ODdlZjgzMjU2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDE6NTE6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmMKaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmEwMDFiMWZmZjU3OGE4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jCkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssCiAKIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIHsKJiM0MzsJc3RydWN0IHNrX3Bzb2NrICpwc29jazsKIAlib29sIHNsb3c7CiAKIAlpZiAoY21kICE9IFNJT0NJTlEpCkBAIC0zNDQsNyAmIzQzOzM0NSwyMCBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJc2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTsKLQkqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spOwomIzQzOwlwc29jayA9IHNrX3Bzb2NrX2dldChzayk7CiYjNDM7CWlmICh1bmxpa2VseSghcHNvY2spKSB7CiYjNDM7CQl1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTsKJiM0MzsJCXJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7CiYjNDM7CX0KJiM0MzsJKmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spOwomIzQzOwkvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG8KJiM0MzsJICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaAomIzQzOwkgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZQomIzQzOwkgKiB0Y3BfaW9jdGwoKSBkb2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QgJmFtcDsmYW1wOyAhcHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KQomIzQzOwkJKmthcmcgJiM0Mzs9IHRjcF9pbnEoc2spOwomIzQzOwlza19wc29ja19wdXQoc2ssIHBzb2NrKTsKIAl1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi5mMGYzNjgyMDFkZGFkYiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtMTM3Myw2ICYjNDM7MTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSkKIAl0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpOwogfQogCiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YQomIzQzOyAqIGluIHNrX3JlY2VpdmVfcXVldWU6IEZJT05SRUFEIG11c3QgYWNjb3VudCBmb3IgaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZCkKJiM0Mzt7CiYjNDM7CWludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsOwomIzQzOwlpbnQgYzAgPSAtMSwgYzEgPSAtMSwgcDAgPSAtMSwgcDEgPSAtMTsKJiM0MzsJc3RydWN0IHRlc3Rfc29ja21hcF9wYXNzX3Byb2cgKnNrZWw7CiYjNDM7CWNoYXIgYnVmWzI1Nl0gPSAmIzM0OzAxMjM0NTY3ODkmIzM0OzsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7b3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsJbWFwID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zb2NrX21hcF9yeCk7CiYjNDM7CiYjNDM7CWVyciA9IGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sICZhbXA7YzAsICZhbXA7YzEsICZhbXA7cDAsICZhbXA7cDEpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7Y3JlYXRlX3NvY2tldF9wYWlycygpJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCAmYW1wO3plcm8sICZhbXA7YzEsIEJQRl9OT0VYSVNUKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfdXBkYXRlX2VsZW0oYzEpJiMzNDspKQomIzQzOwkJZ290byBvdXRfY2xvc2U7CiYjNDM7CiYjNDM7CXNlbnQgPSB4c2VuZChwMSwgJmFtcDtidWYsIHNpemVvZihidWYpLCAwKTsKJiM0MzsJQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCAmIzM0O3hzZW5kKHAxKSYjMzQ7KTsKJiM0MzsJYXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTsKJiM0MzsJQVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgJiMzNDtpb2N0bChGSU9OUkVBRCkmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0X2Nsb3NlOgomIzQzOwljbG9zZShjMCk7CiYjNDM7CWNsb3NlKHAwKTsKJiM0MzsJY2xvc2UoYzEpOwomIzQzOwljbG9zZShwMSk7CiYjNDM7b3V0OgomIzQzOwl0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsKIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiB7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIGNyZWF0ZV91cGRhdGVfZnJlZSYjMzQ7KSkKQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWQmIzM0OykpCiYjNDM7CQl0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbCYjMzQ7KSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBCUEYgU29ja2V0IE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRpbmtlcmluZyB3aXRoIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBza19wc29ja19nZXRgLCBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrYCwgYHRjcF9pbnFgLCBhbmQgYHNrX3Bzb2NrX3B1dGAuIEJhc2VkIG9uIHRoZSBuYW1lcyBhbG9uZSwgSSYjMzk7bSBndWVzc2luZyB0aGVzZSBhcmUgcmVsYXRlZCB0byBwYWNrZXQgc29ja2V0IGludGVyYWN0aW9uLCBwcm9iYWJseSBmb3IgZ2V0dGluZyBkYXRhIG9yIG1hbmFnaW5nIGJ1ZmZlciBzaXplcyBtb3JlIGVmZmljaWVudGx5IHdpdGhpbiB0aGUgQlBGIGNvbnRleHQuCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBgU0lPQ0lOUWAgKG9yIHRoZSBlcXVpdmFsZW50IG9mIGEgYEZJT05SRUFEYCBjYWxsKSBpcyBoYW5kbGVkIGZvciBUQ1AgQlBGIHNvY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRoZSBhbW91bnQgb2YgZGF0YSBhdmFpbGFibGUgaW4gdGhlIHNvY2tldCBidWZmZXIgYW5kIHJldHVybmluZyB0aGUgY29ycmVjdCBzaXplIGlzIGNydWNpYWwgZm9yIHByb3BlciBCUEYgc29ja2V0IGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uIGl0c2VsZiB0byBzZWUgKmV4YWN0bHkqIGhvdyB0aGV5JiMzOTt2ZSByZXdpcmVkIHRoZSBsb2dpYyB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBleGlzdGluZyBmbG93IHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSBpdCYjMzk7cyBpbXByb3ZpbmcgaG93IEJQRiBjYW4gaW50ZXJhY3Qgd2l0aCBpbmNvbWluZyBkYXRhLCB3aGljaCwgaWYgZG9uZSByaWdodCwgY291bGQgcmVhbGx5IG9wZW4gdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGltcGxlbWVudGVkIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzYte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02Mzc9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ0LVx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcdD0gc2tfbXNnX2lzX3JlYWRhYmxlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NTpcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFx0XHQ9IHRjcF9icGZfaW9jdGw7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgdGNwX2JwZl9pb2N0bGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgaXQgKnJlYWNoYWJsZSo/IEFscmlnaHQsIGl0IGxvb2tzIGxpa2UgdGhpcyBgdGNwX2JwZl9pb2N0bGAgY2FuIGJlIHRyaWdnZXJlZCB2aWEgYW4gYGlvY3RsYCBjYWxsIG9uIGEgVENQIHNvY2tldCB0aGF0JiMzOTtzIGJlZW4gYWRkZWQgdG8gYSBCUEYgc29ja21hcC4gWWVzLCB0aGF0IHNvdW5kcyBleHBsb2l0YWJsZSBhbmQgdGhlcmVmb3JlIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhY3R1YWxseSBnZXRzIGNvbXBpbGVkIGluLiBNeSBodW5jaCBpcyBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kLCBwcm9iYWJseSwgYENPTkZJR19ORVRfU09DS19NU0dgIG9yIHNvbWV0aGluZyByZWxhdGVkLiBUaW1lIHRvIGNoZWNrIGBuZXQvaXB2NC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIG5haWwgZG93biB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBmbGFncy4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gcmVwcm9kdWNpbmcgdGhpcyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogYENPTkZJR19ORVRfU09DS19NU0dgIGFuZCBCZXlvbmQqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgcmVxdWlyZW1lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYENPTkZJR19ORVRfU09DS19NU0dgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb24gYSBjbG9zZWx5IHJlbGF0ZWQgZmVhdHVyZTogYENPTkZJR19CUEZfU1lTQ0FMTGAuIEluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBJJiMzOTtkIGJldCBtb25leSB0aGF0IGBDT05GSUdfTkVUX1NPQ0tfTVNHYCAqbGlrZWx5KiBwdWxscyBpbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcyBhIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGFsbW9zdCBhIGdpdmVuIGdpdmVuIG15IGV4cGVyaWVuY2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0aW9uc2hpcCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSB0aGlzIGRlcGVuZGVuY3kgdG8gbWFrZSBzdXJlIHRoZXJlJiMzOTtzIG5vdCBzb21ldGhpbmcgb2RkIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU09DS19NU0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjEKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9TT0NLX01TR2AgU2VsZWN0b3IqKgoKQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3Qgd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSBgTkVUX1NPQ0tfTVNHYCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgYW5kIHdoeS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHNlbGVjdG9ycywgZXNwZWNpYWxseSByZWxhdGVkIHRvIG5ldHdvcmsgc29ja2V0cywgYXJlIHVzdWFsbHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gZm9yIGV2ZW50IG5vdGlmaWNhdGlvbiBvciBkZW11bHRpcGxleGluZy4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIHNlbGVjdG9yIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBjb2RlLiBTbywgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGBORVRfU09DS19NU0dgIGlzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZWFyY2hpbmcgZm9yIHdoZXJlIGl0JiMzOTtzICpzZWxlY3RlZCouIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIGVzc2VudGlhbCBjb250ZXh0IGFuZCByZXZlYWwgdGhlIHB1cnBvc2UgYmVoaW5kIGl0LiBPbmNlIEkgaWRlbnRpZnkgdGhlIHNlbGVjdGluZyBjb2RlIEkgY2FuIGRldGVybWluZSB0aGUgaW50ZW50aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1NPQ0tfTVNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXHRzZWxlY3QgQklOQVJZX1BSSU5URlxua2VybmVsL2JwZi9LY29uZmlnOjM0Olx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuLS1cbm5ldC9LY29uZmlnPTM2MT1jb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbi0tXG5uZXQvS2NvbmZpZy0zNjYtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWc6MzY3Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctMzY4LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODUtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjQvS2NvbmZpZzozODY6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTkzLVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9pcHY2L0tjb25maWc6OTQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2Ni9LY29uZmlnLTk1LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvdGxzL0tjb25maWc9NT1jb25maWcgVExTXG4tLVxubmV0L3Rscy9LY29uZmlnLTEwLVx0c2VsZWN0IENSWVBUT19HQ01cbm5ldC90bHMvS2NvbmZpZzoxMTpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC90bHMvS2NvbmZpZy0xMi1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTk0CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU29ja21hcCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYEJQRl9TWVNDQUxMYCBtZWNoYW5pc20gaXMgdGhlIGtleSB0byBhY3RpdmF0aW5nIHRoZSBgTkVUX1NPQ0tfTVNHYCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgZGVhbHMgd2l0aCBzb2NrbWFwcywgd2hpY2ggaW5oZXJlbnRseSByZWx5IG9uIGBCUEZfU1lTQ0FMTGAuIFNpbmNlIHRoaXMgaXMgYSBwYXRjaCBkZWFsaW5nIHdpdGggbmV3IGZ1bmN0aW9uYWxpdHksIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IG9uIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGlzIHRoZSBmb2NhbCBwb2ludDsgaXQgaXMgYSBjbGVhciBzcG90IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiB0aGF0IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucywgYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AsIGFyZSBjb3JyZWN0bHkgc2V0LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlICpvbmx5KiByZWxldmFudCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBoZXJlLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gb3Zlcmxvb2sgYW55dGhpbmcuIEdpdmVuIHRoYXQgdGhlIHBhdGNoICppcyogbW9kaWZ5aW5nIGB0Y3BfYnBmX2lvY3RsYCwgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgYXJlYSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3MsIHBlcmZvcm1hbmNlIGlzc3Vlcywgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBhbmQgZnV6emluZyBzZWVtcyBhIHBydWRlbnQgbmV4dCBzdGVwIHRvIHRyeSB0byBpZGVudGlmeSBhbnkgaXNzdWVzLgoKTm93LCBsZXQmIzM5O3MgY29kaWZ5IHRoaXMgaW50byBhIHBsYW4gb2YgYWN0aW9uLiBJJiMzOTttIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIGZpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM0LjQwOTIxMjc4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzM2MTk4NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRfU09DS19NU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM0LjQwOTIxOTI2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY2ODgwMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTUwOTliYzdkZjZhZTg4NTM3NmM4ZjBjMmM4NzE1ODdlZjgzMjU2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDAxOjUxOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5hMDAxYjFmZmY1NzhhOCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIHtcXG4rXFx0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcXG4gXFx0Ym9vbCBzbG93O1xcbiBcXG4gXFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxcbkBAIC0zNDQsNyArMzQ1LDIwIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xcbi1cXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xcbitcXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XFxuK1xcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XFxuK1xcdFxcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xcbitcXHRcXHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xcbitcXHR9XFxuK1xcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4rXFx0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXFxuK1xcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcXG4rXFx0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcXG4rXFx0ICogdGNwX2lvY3RsKCkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmICghcHNvY2stXFx1MDAzZXByb2dzLnN0cmVhbV92ZXJkaWN0IFxcdTAwMjZcXHUwMDI2ICFwc29jay1cXHUwMDNlcHJvZ3Muc2tiX3ZlcmRpY3QpXFxuK1xcdFxcdCprYXJnICs9IHRjcF9pbnEoc2spO1xcbitcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG4gXFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXFxuK3tcXG4rXFx0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XFxuK1xcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xcbitcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcXG4rXFx0Y2hhciBidWZbMjU2XSA9IFxcXCIwMTIzNDU2Nzg5XFxcIjtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xcbitcXG4rXFx0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXFx1MDAyNmMwLCBcXHUwMDI2YzEsIFxcdTAwMjZwMCwgXFx1MDAyNnAxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiY3JlYXRlX3NvY2tldF9wYWlycygpXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcXFwiKSlcXG4rXFx0XFx0Z290byBvdXRfY2xvc2U7XFxuK1xcbitcXHRzZW50ID0geHNlbmQocDEsIFxcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcXG4rXFx0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQocDEpXFxcIik7XFxuK1xcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XFxuK1xcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFxcXCJpb2N0bChGSU9OUkVBRClcXFwiKTtcXG4rXFxuK291dF9jbG9zZTpcXG4rXFx0Y2xvc2UoYzApO1xcbitcXHRjbG9zZShwMCk7XFxuK1xcdGNsb3NlKGMxKTtcXG4rXFx0Y2xvc2UocDEpO1xcbitvdXQ6XFxuK1xcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXFxcIikpXFxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcXFwiKSlcXG4rXFx0XFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFxcXCIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTozNS4yNzcxODIwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI4NjgyMjEzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIk5FVF9TT0NLX01TR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNTA5OWJjN2RmNmFlODg1Mzc2YzhmMGMyYzg3MTU4N2VmODMyNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwMTo1MTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmEwMDFiMWZmZjU3OGE4IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiArMzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcbiBcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4ge1xuK1x0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcbiBcdGJvb2wgc2xvdztcbiBcbiBcdGlmIChjbWQgIT0gU0lPQ0lOUSlcbkBAIC0zNDQsNyArMzQ1LDIwIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbitcdHBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTtcbitcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XG4rXHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuK1x0XHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xuK1x0fVxuK1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuK1x0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXG4rXHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXG4rXHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuK1x0ICogdGNwX2lvY3RsKCkgZG9lcy5cbitcdCAqL1xuK1x0aWYgKCFwc29jay1cdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCBcdTAwMjZcdTAwMjYgIXBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KVxuK1x0XHQqa2FyZyArPSB0Y3BfaW5xKHNrKTtcbitcdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuIFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbmluZGV4IGNiMzIyOTcxMWY5M2EzLi5mMGYzNjgyMDFkZGFkYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5AQCAtMTM3Myw2ICsxMzczLDQzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhpbnQgc290eXBlKVxuIFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbiB9XG4gXG4rLyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuKyAqIGluIHNrX3JlY2VpdmVfcXVldWU6IEZJT05SRUFEIG11c3QgYWNjb3VudCBmb3IgaXQuXG4rICovXG4rc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbit7XG4rXHRpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDtcbitcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuK1x0c3RydWN0IHRlc3Rfc29ja21hcF9wYXNzX3Byb2cgKnNrZWw7XG4rXHRjaGFyIGJ1ZlsyNTZdID0gXCIwMTIzNDU2Nzg5XCI7XG4rXG4rXHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwib3Blbl9hbmRfbG9hZFwiKSlcbitcdFx0cmV0dXJuO1xuK1x0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2tfbWFwX3J4KTtcbitcbitcdGVyciA9IGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sIFx1MDAyNmMwLCBcdTAwMjZjMSwgXHUwMDI2cDAsIFx1MDAyNnAxKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJjcmVhdGVfc29ja2V0X3BhaXJzKClcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFx1MDAyNnplcm8sIFx1MDAyNmMxLCBCUEZfTk9FWElTVCk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcIikpXG4rXHRcdGdvdG8gb3V0X2Nsb3NlO1xuK1xuK1x0c2VudCA9IHhzZW5kKHAxLCBcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcbitcdEFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgXCJ4c2VuZChwMSlcIik7XG4rXHRhdmFpbCA9IHdhaXRfZm9yX2Zpb25yZWFkKGMxLCBzaXplb2YoYnVmKSwgSU9fVElNRU9VVF9TRUMpO1xuK1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCJpb2N0bChGSU9OUkVBRClcIik7XG4rXG4rb3V0X2Nsb3NlOlxuK1x0Y2xvc2UoYzApO1xuK1x0Y2xvc2UocDApO1xuK1x0Y2xvc2UoYzEpO1xuK1x0Y2xvc2UocDEpO1xuK291dDpcbitcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4rfVxuK1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIGNyZWF0ZV91cGRhdGVfZnJlZVwiKSlcbkBAIC0xNDE1LDYgKzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKHRydWUpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcIikpXG4rXHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwiKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM1LjI3NzE4NDYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2OTYzMTE0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBCUEYgU29ja2V0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRpbmtlcmluZyB3aXRoIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBmZXcgbmV3IGZ1bmN0aW9uczogYHNrX3Bzb2NrX2dldGAsIGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tgLCBgdGNwX2lucWAsIGFuZCBgc2tfcHNvY2tfcHV0YC4gQmFzZWQgb24gdGhlIG5hbWVzIGFsb25lLCBJJ20gZ3Vlc3NpbmcgdGhlc2UgYXJlIHJlbGF0ZWQgdG8gcGFja2V0IHNvY2tldCBpbnRlcmFjdGlvbiwgcHJvYmFibHkgZm9yIGdldHRpbmcgZGF0YSBvciBtYW5hZ2luZyBidWZmZXIgc2l6ZXMgbW9yZSBlZmZpY2llbnRseSB3aXRoaW4gdGhlIEJQRiBjb250ZXh0LlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBgU0lPQ0lOUWAgKG9yIHRoZSBlcXVpdmFsZW50IG9mIGEgYEZJT05SRUFEYCBjYWxsKSBpcyBoYW5kbGVkIGZvciBUQ1AgQlBGIHNvY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRoZSBhbW91bnQgb2YgZGF0YSBhdmFpbGFibGUgaW4gdGhlIHNvY2tldCBidWZmZXIgYW5kIHJldHVybmluZyB0aGUgY29ycmVjdCBzaXplIGlzIGNydWNpYWwgZm9yIHByb3BlciBCUEYgc29ja2V0IGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gaXRzZWxmIHRvIHNlZSAqZXhhY3RseSogaG93IHRoZXkndmUgcmV3aXJlZCB0aGUgbG9naWMgdGhlcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBleGlzdGluZyBmbG93IHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSBpdCdzIGltcHJvdmluZyBob3cgQlBGIGNhbiBpbnRlcmFjdCB3aXRoIGluY29taW5nIGRhdGEsIHdoaWNoLCBpZiBkb25lIHJpZ2h0LCBjb3VsZCByZWFsbHkgb3BlbiB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIExldCdzIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM5LjM0NjgxNzIzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxMjgyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02Mzc9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NDQtXFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ1OlxcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFxcdFxcdD0gdGNwX2JwZl9pb2N0bDtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTozOS40NTM5NDk1ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDIzOTUxMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgdGNwX2JwZl9pb2N0bGAuIFRoYXQncyBpbnRlcmVzdGluZywgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBpdCAqcmVhY2hhYmxlKj8gQWxyaWdodCwgaXQgbG9va3MgbGlrZSB0aGlzIGB0Y3BfYnBmX2lvY3RsYCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBhbiBgaW9jdGxgIGNhbGwgb24gYSBUQ1Agc29ja2V0IHRoYXQncyBiZWVuIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAuIFllcywgdGhhdCBzb3VuZHMgZXhwbG9pdGFibGUgYW5kIHRoZXJlZm9yZSB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhY3R1YWxseSBnZXRzIGNvbXBpbGVkIGluLiBNeSBodW5jaCBpcyBpdCdzIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQsIHByb2JhYmx5LCBgQ09ORklHX05FVF9TT0NLX01TR2Agb3Igc29tZXRoaW5nIHJlbGF0ZWQuIFRpbWUgdG8gY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYCB0byBjb25maXJtIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgbmFpbCBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIGZsYWdzLiBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byByZXByb2R1Y2luZyB0aGlzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzUyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjQzLjQ3NzkwMjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzIyNDA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo0My41NzExMzIxODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEzOTE0MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBgQ09ORklHX05FVF9TT0NLX01TR2AgYW5kIEJleW9uZCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHJlcXVpcmVtZW50IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb24gYSBjbG9zZWx5IHJlbGF0ZWQgZmVhdHVyZTogYENPTkZJR19CUEZfU1lTQ0FMTGAuIEluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBJJ2QgYmV0IG1vbmV5IHRoYXQgYENPTkZJR19ORVRfU09DS19NU0dgICpsaWtlbHkqIHB1bGxzIGluIGBDT05GSUdfQlBGX1NZU0NBTExgIGFzIGEgZGVwZW5kZW5jeS4gSXQncyBhbG1vc3QgYSBnaXZlbiBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZWxhdGlvbnNoaXAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vdCBzb21ldGhpbmcgb2RkIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NDYuODg1MDQ4OTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc0ODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xcbi0tXFxubmV0L0tjb25maWctNDc4LVxcbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXFxubmV0L0tjb25maWctNDgwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NDcuMDMzODAxNzQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNTQ3NzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBORVRfU09DS19NU0dgIFNlbGVjdG9yKipcblxuQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3Qgd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSBgTkVUX1NPQ0tfTVNHYCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBiZWluZyBzZWxlY3RlZCBhbmQgd2h5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc2VsZWN0b3JzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gbmV0d29yayBzb2NrZXRzLCBhcmUgdXN1YWxseSBwYXJ0IG9mIGEgbGFyZ2VyIG1lY2hhbmlzbSBmb3IgZXZlbnQgbm90aWZpY2F0aW9uIG9yIGRlbXVsdGlwbGV4aW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgc2VsZWN0b3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNvZGUuIFNvLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgYE5FVF9TT0NLX01TR2AgaXMgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIHRoZSByZWxldmFudCBjb2RlYmFzZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgc2VhcmNoaW5nIGZvciB3aGVyZSBpdCdzICpzZWxlY3RlZCouIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZXNzZW50aWFsIGNvbnRleHQgYW5kIHJldmVhbCB0aGUgcHVycG9zZSBiZWhpbmQgaXQuIE9uY2UgSSBpZGVudGlmeSB0aGUgc2VsZWN0aW5nIGNvZGUgSSBjYW4gZGV0ZXJtaW5lIHRoZSBpbnRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NjEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo1MC4yNDkyODA4NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODgxMjk2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo1My4xMzc0MTc1MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1NzM2MjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU29ja21hcCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBCUEZfU1lTQ0FMTGAgbWVjaGFuaXNtIGlzIHRoZSBrZXkgdG8gYWN0aXZhdGluZyB0aGUgYE5FVF9TT0NLX01TR2AgZnVuY3Rpb25hbGl0eSwgYW5kIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGRlYWxzIHdpdGggc29ja21hcHMsIHdoaWNoIGluaGVyZW50bHkgcmVseSBvbiBgQlBGX1NZU0NBTExgLiBTaW5jZSB0aGlzIGlzIGEgcGF0Y2ggZGVhbGluZyB3aXRoIG5ldyBmdW5jdGlvbmFsaXR5LCBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IG9uIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGlzIHRoZSBmb2NhbCBwb2ludDsgaXQgaXMgYSBjbGVhciBzcG90IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiB0aGF0IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucywgYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AsIGFyZSBjb3JyZWN0bHkgc2V0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgKm9ubHkqIHJlbGV2YW50IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUuIEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGFueXRoaW5nLiBHaXZlbiB0aGF0IHRoZSBwYXRjaCAqaXMqIG1vZGlmeWluZyBgdGNwX2JwZl9pb2N0bGAsIG15IGd1dCB0ZWxscyBtZSB0aGlzIGFyZWEgd2FycmFudHMgZnV6emluZy4gVGhlIGNoYW5nZXMgY291bGQgaW50cm9kdWNlIHN1YnRsZSBidWdzLCBwZXJmb3JtYW5jZSBpc3N1ZXMsIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgYW5kIGZ1enppbmcgc2VlbXMgYSBwcnVkZW50IG5leHQgc3RlcCB0byB0cnkgdG8gaWRlbnRpZnkgYW55IGlzc3Vlcy5cblxuTm93LCBsZXQncyBjb2RpZnkgdGhpcyBpbnRvIGEgcGxhbiBvZiBhY3Rpb24uIEknbSByZWFkeSB0byBkb2N1bWVudCB0aGVzZSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5NCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NTcuOTk0NzgyMTU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNjE2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUX1NPQ0tfTVNHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCBpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgaW5ncmVzcyBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGEgdmVyZGljdCBwcm9ncmFtIGlzIG5vdCBhdHRhY2hlZCB0byBhIHNvY2ttYXAgc29ja2V0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVhY2hhYmxlIHZpYSBgaW9jdGxgIG9uIGEgVENQIHNvY2tldCBpbiBhIEJQRiBzb2NrbWFwLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRfU09DS19NU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmkc62[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 01:28:45 +0000 UTC FinishedAt: 2026-07-08 01:51:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET_SOCK_MSG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d2c9a99135da931377240942d44f3dea104cedb8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET_SOCK_MSG" ], "series_id": "9e508079-79f1-4aa2-a0e9-4836e63eaeb4" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O05FVF9TT0NLX01TRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNTA5OWJjN2RmNmFlODg1Mzc2YzhmMGMyYzg3MTU4N2VmODMyNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwMTo1MTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5hMDAxYjFmZmY1NzhhOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5AQCAtMzM0LDYgJiM0MzszMzQsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuIFxuIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiB7XG4mIzQzO1x0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcbiBcdGJvb2wgc2xvdztcbiBcbiBcdGlmIChjbWQgIT0gU0lPQ0lOUSlcbkBAIC0zNDQsNyAmIzQzOzM0NSwyMCBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0c2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTtcbi1cdCprYXJnID0gc2tfcHNvY2tfbXNnX2lucShzayk7XG4mIzQzO1x0cHNvY2sgPSBza19wc29ja19nZXQoc2spO1xuJiM0MztcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XG4mIzQzO1x0XHR1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTtcbiYjNDM7XHRcdHJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7XG4mIzQzO1x0fVxuJiM0MztcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcbiYjNDM7XHQvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG9cbiYjNDM7XHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXG4mIzQzO1x0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcbiYjNDM7XHQgKiB0Y3BfaW9jdGwoKSBkb2VzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcHNvY2stXHUwMDNlcHJvZ3Muc3RyZWFtX3ZlcmRpY3QgXHUwMDI2XHUwMDI2ICFwc29jay1cdTAwM2Vwcm9ncy5za2JfdmVyZGljdClcbiYjNDM7XHRcdCprYXJnICYjNDM7PSB0Y3BfaW5xKHNrKTtcbiYjNDM7XHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcbiBcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uZjBmMzY4MjAxZGRhZGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTEzNzMsNiAmIzQzOzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuJiM0MzsgKiBpbiBza19yZWNlaXZlX3F1ZXVlOiBGSU9OUkVBRCBtdXN0IGFjY291bnQgZm9yIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsO1xuJiM0MztcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nICpza2VsO1xuJiM0MztcdGNoYXIgYnVmWzI1Nl0gPSBcJiMzNDswMTIzNDU2Nzg5XCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHRtYXAgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjcmVhdGVfc29ja2V0X3BhaXJzKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcdTAwMjZjMCwgXHUwMDI2YzEsIFx1MDAyNnAwLCBcdTAwMjZwMSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtjcmVhdGVfc29ja2V0X3BhaXJzKClcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCBcdTAwMjZ6ZXJvLCBcdTAwMjZjMSwgQlBGX05PRVhJU1QpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF91cGRhdGVfZWxlbShjMSlcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfY2xvc2U7XG4mIzQzO1xuJiM0MztcdHNlbnQgPSB4c2VuZChwMSwgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSwgMCk7XG4mIzQzO1x0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcJiMzNDt4c2VuZChwMSlcJiMzNDspO1xuJiM0MztcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XG4mIzQzO1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCYjMzQ7aW9jdGwoRklPTlJFQUQpXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dF9jbG9zZTpcbiYjNDM7XHRjbG9zZShjMCk7XG4mIzQzO1x0Y2xvc2UocDApO1xuJiM0MztcdGNsb3NlKGMxKTtcbiYjNDM7XHRjbG9zZShwMSk7XG4mIzQzO291dDpcbiYjNDM7XHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcJiMzNDspKVxuQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWRcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBub192ZXJkaWN0IGZpb25yZWFkXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIHNrYl92ZXJkaWN0IGZpb25yZWFkIG9uIGRyb3BcJiMzNDspKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwmIzM0OykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTUwOTliYzdkZjZhZTg4NTM3NmM4ZjBjMmM4NzE1ODdlZjgzMjU2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDE6NTE6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYnBmLmMgYi9uZXQvaXB2NC90Y3BfYnBmLmMKaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmEwMDFiMWZmZjU3OGE4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2JwZi5jCkBAIC0zMzQsNiAmIzQzOzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssCiAKIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZykKIHsKJiM0MzsJc3RydWN0IHNrX3Bzb2NrICpwc29jazsKIAlib29sIHNsb3c7CiAKIAlpZiAoY21kICE9IFNJT0NJTlEpCkBAIC0zNDQsNyAmIzQzOzM0NSwyMCBAQCBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJc2xvdyA9IGxvY2tfc29ja19mYXN0KHNrKTsKLQkqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spOwomIzQzOwlwc29jayA9IHNrX3Bzb2NrX2dldChzayk7CiYjNDM7CWlmICh1bmxpa2VseSghcHNvY2spKSB7CiYjNDM7CQl1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTsKJiM0MzsJCXJldHVybiB0Y3BfaW9jdGwoc2ssIGNtZCwga2FyZyk7CiYjNDM7CX0KJiM0MzsJKmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spOwomIzQzOwkvKiBXaXRob3V0IGEgdmVyZGljdCBwcm9ncmFtLCBpbmdyZXNzIGRhdGEgaXMgbmV2ZXIgZGl2ZXJ0ZWQgdG8KJiM0MzsJICogaW5ncmVzc19tc2c6IGl0IHN0YXlzIGluIHNrX3JlY2VpdmVfcXVldWUgYW5kIGlzIHJlYWQgdGhyb3VnaAomIzQzOwkgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZQomIzQzOwkgKiB0Y3BfaW9jdGwoKSBkb2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFwc29jay0mZ3Q7cHJvZ3Muc3RyZWFtX3ZlcmRpY3QgJmFtcDsmYW1wOyAhcHNvY2stJmd0O3Byb2dzLnNrYl92ZXJkaWN0KQomIzQzOwkJKmthcmcgJiM0Mzs9IHRjcF9pbnEoc2spOwomIzQzOwlza19wc29ja19wdXQoc2ssIHBzb2NrKTsKIAl1bmxvY2tfc29ja19mYXN0KHNrLCBzbG93KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi5mMGYzNjgyMDFkZGFkYiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtMTM3Myw2ICYjNDM7MTM3Myw0MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoaW50IHNvdHlwZSkKIAl0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpOwogfQogCiYjNDM7LyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YQomIzQzOyAqIGluIHNrX3JlY2VpdmVfcXVldWU6IEZJT05SRUFEIG11c3QgYWNjb3VudCBmb3IgaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZCkKJiM0Mzt7CiYjNDM7CWludCBlcnIsIG1hcCwgemVybyA9IDAsIHNlbnQsIGF2YWlsOwomIzQzOwlpbnQgYzAgPSAtMSwgYzEgPSAtMSwgcDAgPSAtMSwgcDEgPSAtMTsKJiM0MzsJc3RydWN0IHRlc3Rfc29ja21hcF9wYXNzX3Byb2cgKnNrZWw7CiYjNDM7CWNoYXIgYnVmWzI1Nl0gPSAmIzM0OzAxMjM0NTY3ODkmIzM0OzsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7b3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsJbWFwID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zb2NrX21hcF9yeCk7CiYjNDM7CiYjNDM7CWVyciA9IGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sICZhbXA7YzAsICZhbXA7YzEsICZhbXA7cDAsICZhbXA7cDEpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7Y3JlYXRlX3NvY2tldF9wYWlycygpJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0obWFwLCAmYW1wO3plcm8sICZhbXA7YzEsIEJQRl9OT0VYSVNUKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfdXBkYXRlX2VsZW0oYzEpJiMzNDspKQomIzQzOwkJZ290byBvdXRfY2xvc2U7CiYjNDM7CiYjNDM7CXNlbnQgPSB4c2VuZChwMSwgJmFtcDtidWYsIHNpemVvZihidWYpLCAwKTsKJiM0MzsJQVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCAmIzM0O3hzZW5kKHAxKSYjMzQ7KTsKJiM0MzsJYXZhaWwgPSB3YWl0X2Zvcl9maW9ucmVhZChjMSwgc2l6ZW9mKGJ1ZiksIElPX1RJTUVPVVRfU0VDKTsKJiM0MzsJQVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgJiMzNDtpb2N0bChGSU9OUkVBRCkmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0X2Nsb3NlOgomIzQzOwljbG9zZShjMCk7CiYjNDM7CWNsb3NlKHAwKTsKJiM0MzsJY2xvc2UoYzEpOwomIzQzOwljbG9zZShwMSk7CiYjNDM7b3V0OgomIzQzOwl0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsKIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiB7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIGNyZWF0ZV91cGRhdGVfZnJlZSYjMzQ7KSkKQEAgLTE0MTUsNiAmIzQzOzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9maW9ucmVhZCh0cnVlKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWQmIzM0OykpCiYjNDM7CQl0ZXN0X3NvY2ttYXBfbm9fdmVyZGljdF9maW9ucmVhZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZCBvbiBkcm9wJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbCYjMzQ7KSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBCUEYgU29ja2V0IE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRpbmtlcmluZyB3aXRoIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBza19wc29ja19nZXRgLCBgc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrYCwgYHRjcF9pbnFgLCBhbmQgYHNrX3Bzb2NrX3B1dGAuIEJhc2VkIG9uIHRoZSBuYW1lcyBhbG9uZSwgSSYjMzk7bSBndWVzc2luZyB0aGVzZSBhcmUgcmVsYXRlZCB0byBwYWNrZXQgc29ja2V0IGludGVyYWN0aW9uLCBwcm9iYWJseSBmb3IgZ2V0dGluZyBkYXRhIG9yIG1hbmFnaW5nIGJ1ZmZlciBzaXplcyBtb3JlIGVmZmljaWVudGx5IHdpdGhpbiB0aGUgQlBGIGNvbnRleHQuCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBgU0lPQ0lOUWAgKG9yIHRoZSBlcXVpdmFsZW50IG9mIGEgYEZJT05SRUFEYCBjYWxsKSBpcyBoYW5kbGVkIGZvciBUQ1AgQlBGIHNvY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRoZSBhbW91bnQgb2YgZGF0YSBhdmFpbGFibGUgaW4gdGhlIHNvY2tldCBidWZmZXIgYW5kIHJldHVybmluZyB0aGUgY29ycmVjdCBzaXplIGlzIGNydWNpYWwgZm9yIHByb3BlciBCUEYgc29ja2V0IGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYHRjcF9icGZfaW9jdGxgIGZ1bmN0aW9uIGl0c2VsZiB0byBzZWUgKmV4YWN0bHkqIGhvdyB0aGV5JiMzOTt2ZSByZXdpcmVkIHRoZSBsb2dpYyB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBleGlzdGluZyBmbG93IHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSBpdCYjMzk7cyBpbXByb3ZpbmcgaG93IEJQRiBjYW4gaW50ZXJhY3Qgd2l0aCBpbmNvbWluZyBkYXRhLCB3aGljaCwgaWYgZG9uZSByaWdodCwgY291bGQgcmVhbGx5IG9wZW4gdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGltcGxlbWVudGVkIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0zMzQtXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbm5ldC9pcHY0L3RjcF9icGYuYy0zMzYte1xuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz02Mzc9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ0LVx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcdD0gc2tfbXNnX2lzX3JlYWRhYmxlO1xubmV0L2lwdjQvdGNwX2JwZi5jOjY0NTpcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFx0XHQ9IHRjcF9icGZfaW9jdGw7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgdGNwX2JwZl9pb2N0bGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgaXQgKnJlYWNoYWJsZSo/IEFscmlnaHQsIGl0IGxvb2tzIGxpa2UgdGhpcyBgdGNwX2JwZl9pb2N0bGAgY2FuIGJlIHRyaWdnZXJlZCB2aWEgYW4gYGlvY3RsYCBjYWxsIG9uIGEgVENQIHNvY2tldCB0aGF0JiMzOTtzIGJlZW4gYWRkZWQgdG8gYSBCUEYgc29ja21hcC4gWWVzLCB0aGF0IHNvdW5kcyBleHBsb2l0YWJsZSBhbmQgdGhlcmVmb3JlIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhY3R1YWxseSBnZXRzIGNvbXBpbGVkIGluLiBNeSBodW5jaCBpcyBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kLCBwcm9iYWJseSwgYENPTkZJR19ORVRfU09DS19NU0dgIG9yIHNvbWV0aGluZyByZWxhdGVkLiBUaW1lIHRvIGNoZWNrIGBuZXQvaXB2NC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIG5haWwgZG93biB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBmbGFncy4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gcmVwcm9kdWNpbmcgdGhpcyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogYENPTkZJR19ORVRfU09DS19NU0dgIGFuZCBCZXlvbmQqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgcmVxdWlyZW1lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYENPTkZJR19ORVRfU09DS19NU0dgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb24gYSBjbG9zZWx5IHJlbGF0ZWQgZmVhdHVyZTogYENPTkZJR19CUEZfU1lTQ0FMTGAuIEluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBJJiMzOTtkIGJldCBtb25leSB0aGF0IGBDT05GSUdfTkVUX1NPQ0tfTVNHYCAqbGlrZWx5KiBwdWxscyBpbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcyBhIGRlcGVuZGVuY3kuIEl0JiMzOTtzIGFsbW9zdCBhIGdpdmVuIGdpdmVuIG15IGV4cGVyaWVuY2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0aW9uc2hpcCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSB0aGlzIGRlcGVuZGVuY3kgdG8gbWFrZSBzdXJlIHRoZXJlJiMzOTtzIG5vdCBzb21ldGhpbmcgb2RkIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU09DS19NU0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjEKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9TT0NLX01TR2AgU2VsZWN0b3IqKgoKQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3Qgd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSBgTkVUX1NPQ0tfTVNHYCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgYW5kIHdoeS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHNlbGVjdG9ycywgZXNwZWNpYWxseSByZWxhdGVkIHRvIG5ldHdvcmsgc29ja2V0cywgYXJlIHVzdWFsbHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gZm9yIGV2ZW50IG5vdGlmaWNhdGlvbiBvciBkZW11bHRpcGxleGluZy4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIHNlbGVjdG9yIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBjb2RlLiBTbywgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGBORVRfU09DS19NU0dgIGlzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZWFyY2hpbmcgZm9yIHdoZXJlIGl0JiMzOTtzICpzZWxlY3RlZCouIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIGVzc2VudGlhbCBjb250ZXh0IGFuZCByZXZlYWwgdGhlIHB1cnBvc2UgYmVoaW5kIGl0LiBPbmNlIEkgaWRlbnRpZnkgdGhlIHNlbGVjdGluZyBjb2RlIEkgY2FuIGRldGVybWluZSB0aGUgaW50ZW50aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1NPQ0tfTVNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXHRzZWxlY3QgQklOQVJZX1BSSU5URlxua2VybmVsL2JwZi9LY29uZmlnOjM0Olx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuLS1cbm5ldC9LY29uZmlnPTM2MT1jb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbi0tXG5uZXQvS2NvbmZpZy0zNjYtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWc6MzY3Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctMzY4LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODUtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjQvS2NvbmZpZzozODY6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTkzLVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9pcHY2L0tjb25maWc6OTQ6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2Ni9LY29uZmlnLTk1LVx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbi0tXG5uZXQvdGxzL0tjb25maWc9NT1jb25maWcgVExTXG4tLVxubmV0L3Rscy9LY29uZmlnLTEwLVx0c2VsZWN0IENSWVBUT19HQ01cbm5ldC90bHMvS2NvbmZpZzoxMTpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC90bHMvS2NvbmZpZy0xMi1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTk0CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU29ja21hcCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYEJQRl9TWVNDQUxMYCBtZWNoYW5pc20gaXMgdGhlIGtleSB0byBhY3RpdmF0aW5nIHRoZSBgTkVUX1NPQ0tfTVNHYCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgZGVhbHMgd2l0aCBzb2NrbWFwcywgd2hpY2ggaW5oZXJlbnRseSByZWx5IG9uIGBCUEZfU1lTQ0FMTGAuIFNpbmNlIHRoaXMgaXMgYSBwYXRjaCBkZWFsaW5nIHdpdGggbmV3IGZ1bmN0aW9uYWxpdHksIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IG9uIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGlzIHRoZSBmb2NhbCBwb2ludDsgaXQgaXMgYSBjbGVhciBzcG90IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiB0aGF0IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucywgYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AsIGFyZSBjb3JyZWN0bHkgc2V0LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdGNwX2JwZl9pb2N0bGAgaXMgdGhlICpvbmx5KiByZWxldmFudCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBoZXJlLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gb3Zlcmxvb2sgYW55dGhpbmcuIEdpdmVuIHRoYXQgdGhlIHBhdGNoICppcyogbW9kaWZ5aW5nIGB0Y3BfYnBmX2lvY3RsYCwgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgYXJlYSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3MsIHBlcmZvcm1hbmNlIGlzc3Vlcywgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBhbmQgZnV6emluZyBzZWVtcyBhIHBydWRlbnQgbmV4dCBzdGVwIHRvIHRyeSB0byBpZGVudGlmeSBhbnkgaXNzdWVzLgoKTm93LCBsZXQmIzM5O3MgY29kaWZ5IHRoaXMgaW50byBhIHBsYW4gb2YgYWN0aW9uLiBJJiMzOTttIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIGZpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM0LjQwOTIxMjc4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzM2MTk4NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRfU09DS19NU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM0LjQwOTIxOTI2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY2ODgwMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTUwOTliYzdkZjZhZTg4NTM3NmM4ZjBjMmM4NzE1ODdlZjgzMjU2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDAxOjUxOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IGNjMGJkNzNmMzZiNmQ2Li5hMDAxYjFmZmY1NzhhOCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtMzM0LDYgKzMzNCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnX3BhcnNlcihzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXFxuIHtcXG4rXFx0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcXG4gXFx0Ym9vbCBzbG93O1xcbiBcXG4gXFx0aWYgKGNtZCAhPSBTSU9DSU5RKVxcbkBAIC0zNDQsNyArMzQ1LDIwIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xcbi1cXHQqa2FyZyA9IHNrX3Bzb2NrX21zZ19pbnEoc2spO1xcbitcXHRwc29jayA9IHNrX3Bzb2NrX2dldChzayk7XFxuK1xcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XFxuK1xcdFxcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xcbitcXHRcXHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xcbitcXHR9XFxuK1xcdCprYXJnID0gc2tfcHNvY2tfZ2V0X21zZ19sZW5fbm9sb2NrKHBzb2NrKTtcXG4rXFx0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXFxuK1xcdCAqIGluZ3Jlc3NfbXNnOiBpdCBzdGF5cyBpbiBza19yZWNlaXZlX3F1ZXVlIGFuZCBpcyByZWFkIHRocm91Z2hcXG4rXFx0ICogdGhlIGZhbGxiYWNrIHRvIHRjcF9yZWN2bXNnKCksIHNvIGFjY291bnQgZm9yIGl0IGxpa2VcXG4rXFx0ICogdGNwX2lvY3RsKCkgZG9lcy5cXG4rXFx0ICovXFxuK1xcdGlmICghcHNvY2stXFx1MDAzZXByb2dzLnN0cmVhbV92ZXJkaWN0IFxcdTAwMjZcXHUwMDI2ICFwc29jay1cXHUwMDNlcHJvZ3Muc2tiX3ZlcmRpY3QpXFxuK1xcdFxcdCprYXJnICs9IHRjcF9pbnEoc2spO1xcbitcXHRza19wc29ja19wdXQoc2ssIHBzb2NrKTtcXG4gXFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLmYwZjM2ODIwMWRkYWRiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC0xMzczLDYgKzEzNzMsNDMgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKy8qIEEgc29ja2V0IGluIGEgc29ja21hcCB3aXRob3V0IGEgdmVyZGljdCBwcm9ncmFtIGtlZXBzIGl0cyBpbmdyZXNzIGRhdGFcXG4rICogaW4gc2tfcmVjZWl2ZV9xdWV1ZTogRklPTlJFQUQgbXVzdCBhY2NvdW50IGZvciBpdC5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKHZvaWQpXFxuK3tcXG4rXFx0aW50IGVyciwgbWFwLCB6ZXJvID0gMCwgc2VudCwgYXZhaWw7XFxuK1xcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xcbitcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZyAqc2tlbDtcXG4rXFx0Y2hhciBidWZbMjU2XSA9IFxcXCIwMTIzNDU2Nzg5XFxcIjtcXG4rXFxuK1xcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcdG1hcCA9IGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja19tYXBfcngpO1xcbitcXG4rXFx0ZXJyID0gY3JlYXRlX3NvY2tldF9wYWlycyhBRl9JTkVULCBTT0NLX1NUUkVBTSwgXFx1MDAyNmMwLCBcXHUwMDI2YzEsIFxcdTAwMjZwMCwgXFx1MDAyNnAxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiY3JlYXRlX3NvY2tldF9wYWlycygpXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2YzEsIEJQRl9OT0VYSVNUKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcXFwiKSlcXG4rXFx0XFx0Z290byBvdXRfY2xvc2U7XFxuK1xcbitcXHRzZW50ID0geHNlbmQocDEsIFxcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcXG4rXFx0QVNTRVJUX0VRKHNlbnQsIHNpemVvZihidWYpLCBcXFwieHNlbmQocDEpXFxcIik7XFxuK1xcdGF2YWlsID0gd2FpdF9mb3JfZmlvbnJlYWQoYzEsIHNpemVvZihidWYpLCBJT19USU1FT1VUX1NFQyk7XFxuK1xcdEFTU0VSVF9FUShhdmFpbCwgc2l6ZW9mKGJ1ZiksIFxcXCJpb2N0bChGSU9OUkVBRClcXFwiKTtcXG4rXFxuK291dF9jbG9zZTpcXG4rXFx0Y2xvc2UoYzApO1xcbitcXHRjbG9zZShwMCk7XFxuK1xcdGNsb3NlKGMxKTtcXG4rXFx0Y2xvc2UocDEpO1xcbitvdXQ6XFxuK1xcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXFxcIikpXFxuQEAgLTE0MTUsNiArMTQ1Miw4IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9zaHV0ZG93bigpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQodHJ1ZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcXFwiKSlcXG4rXFx0XFx0dGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfZmlvbnJlYWQoZmFsc2UpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFxcXCIpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTozNS4yNzcxODIwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI4NjgyMjEzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIk5FVF9TT0NLX01TR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGNwX2JwZl9pb2N0bGAgaW4gYG5ldC9pcHY0L3RjcF9icGYuY2AgdG8gY29ycmVjdGx5IGFjY291bnQgZm9yIGluZ3Jlc3MgZGF0YSBpbiBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiBhIHZlcmRpY3QgcHJvZ3JhbSBpcyBub3QgYXR0YWNoZWQgdG8gYSBzb2NrbWFwIHNvY2tldC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB2aWEgYGlvY3RsYCBvbiBhIFRDUCBzb2NrZXQgaW4gYSBCUEYgc29ja21hcC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNTA5OWJjN2RmNmFlODg1Mzc2YzhmMGMyYzg3MTU4N2VmODMyNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwMTo1MTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggY2MwYmQ3M2YzNmI2ZDYuLmEwMDFiMWZmZjU3OGE4IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC0zMzQsNiArMzM0LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2dfcGFyc2VyKHN0cnVjdCBzb2NrICpzayxcbiBcbiBzdGF0aWMgaW50IHRjcF9icGZfaW9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBpbnQgKmthcmcpXG4ge1xuK1x0c3RydWN0IHNrX3Bzb2NrICpwc29jaztcbiBcdGJvb2wgc2xvdztcbiBcbiBcdGlmIChjbWQgIT0gU0lPQ0lOUSlcbkBAIC0zNDQsNyArMzQ1LDIwIEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRzbG93ID0gbG9ja19zb2NrX2Zhc3Qoc2spO1xuLVx0KmthcmcgPSBza19wc29ja19tc2dfaW5xKHNrKTtcbitcdHBzb2NrID0gc2tfcHNvY2tfZ2V0KHNrKTtcbitcdGlmICh1bmxpa2VseSghcHNvY2spKSB7XG4rXHRcdHVubG9ja19zb2NrX2Zhc3Qoc2ssIHNsb3cpO1xuK1x0XHRyZXR1cm4gdGNwX2lvY3RsKHNrLCBjbWQsIGthcmcpO1xuK1x0fVxuK1x0KmthcmcgPSBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2socHNvY2spO1xuK1x0LyogV2l0aG91dCBhIHZlcmRpY3QgcHJvZ3JhbSwgaW5ncmVzcyBkYXRhIGlzIG5ldmVyIGRpdmVydGVkIHRvXG4rXHQgKiBpbmdyZXNzX21zZzogaXQgc3RheXMgaW4gc2tfcmVjZWl2ZV9xdWV1ZSBhbmQgaXMgcmVhZCB0aHJvdWdoXG4rXHQgKiB0aGUgZmFsbGJhY2sgdG8gdGNwX3JlY3Ztc2coKSwgc28gYWNjb3VudCBmb3IgaXQgbGlrZVxuK1x0ICogdGNwX2lvY3RsKCkgZG9lcy5cbitcdCAqL1xuK1x0aWYgKCFwc29jay1cdTAwM2Vwcm9ncy5zdHJlYW1fdmVyZGljdCBcdTAwMjZcdTAwMjYgIXBzb2NrLVx1MDAzZXByb2dzLnNrYl92ZXJkaWN0KVxuK1x0XHQqa2FyZyArPSB0Y3BfaW5xKHNrKTtcbitcdHNrX3Bzb2NrX3B1dChzaywgcHNvY2spO1xuIFx0dW5sb2NrX3NvY2tfZmFzdChzaywgc2xvdyk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbmluZGV4IGNiMzIyOTcxMWY5M2EzLi5mMGYzNjgyMDFkZGFkYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5AQCAtMTM3Myw2ICsxMzczLDQzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhpbnQgc290eXBlKVxuIFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbiB9XG4gXG4rLyogQSBzb2NrZXQgaW4gYSBzb2NrbWFwIHdpdGhvdXQgYSB2ZXJkaWN0IHByb2dyYW0ga2VlcHMgaXRzIGluZ3Jlc3MgZGF0YVxuKyAqIGluIHNrX3JlY2VpdmVfcXVldWU6IEZJT05SRUFEIG11c3QgYWNjb3VudCBmb3IgaXQuXG4rICovXG4rc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX25vX3ZlcmRpY3RfZmlvbnJlYWQodm9pZClcbit7XG4rXHRpbnQgZXJyLCBtYXAsIHplcm8gPSAwLCBzZW50LCBhdmFpbDtcbitcdGludCBjMCA9IC0xLCBjMSA9IC0xLCBwMCA9IC0xLCBwMSA9IC0xO1xuK1x0c3RydWN0IHRlc3Rfc29ja21hcF9wYXNzX3Byb2cgKnNrZWw7XG4rXHRjaGFyIGJ1ZlsyNTZdID0gXCIwMTIzNDU2Nzg5XCI7XG4rXG4rXHRza2VsID0gdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwib3Blbl9hbmRfbG9hZFwiKSlcbitcdFx0cmV0dXJuO1xuK1x0bWFwID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2tfbWFwX3J4KTtcbitcbitcdGVyciA9IGNyZWF0ZV9zb2NrZXRfcGFpcnMoQUZfSU5FVCwgU09DS19TVFJFQU0sIFx1MDAyNmMwLCBcdTAwMjZjMSwgXHUwMDI2cDAsIFx1MDAyNnAxKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJjcmVhdGVfc29ja2V0X3BhaXJzKClcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXAsIFx1MDAyNnplcm8sIFx1MDAyNmMxLCBCUEZfTk9FWElTVCk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF91cGRhdGVfZWxlbShjMSlcIikpXG4rXHRcdGdvdG8gb3V0X2Nsb3NlO1xuK1xuK1x0c2VudCA9IHhzZW5kKHAxLCBcdTAwMjZidWYsIHNpemVvZihidWYpLCAwKTtcbitcdEFTU0VSVF9FUShzZW50LCBzaXplb2YoYnVmKSwgXCJ4c2VuZChwMSlcIik7XG4rXHRhdmFpbCA9IHdhaXRfZm9yX2Zpb25yZWFkKGMxLCBzaXplb2YoYnVmKSwgSU9fVElNRU9VVF9TRUMpO1xuK1x0QVNTRVJUX0VRKGF2YWlsLCBzaXplb2YoYnVmKSwgXCJpb2N0bChGSU9OUkVBRClcIik7XG4rXG4rb3V0X2Nsb3NlOlxuK1x0Y2xvc2UoYzApO1xuK1x0Y2xvc2UocDApO1xuK1x0Y2xvc2UoYzEpO1xuK1x0Y2xvc2UocDEpO1xuK291dDpcbitcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XG4rfVxuK1xuIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIGNyZWF0ZV91cGRhdGVfZnJlZVwiKSlcbkBAIC0xNDE1LDYgKzE0NTIsOCBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3Rfc2h1dGRvd24oKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBmaW9ucmVhZFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKHRydWUpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJzb2NrbWFwIG5vX3ZlcmRpY3QgZmlvbnJlYWRcIikpXG4rXHRcdHRlc3Rfc29ja21hcF9ub192ZXJkaWN0X2Zpb25yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgc2tiX3ZlcmRpY3QgZmlvbnJlYWQgb24gZHJvcFwiKSlcbiBcdFx0dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2Zpb25yZWFkKGZhbHNlKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBza2JfdmVyZGljdCBjaGFuZ2UgdGFpbFwiKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM1LjI3NzE4NDYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2OTYzMTE0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBCUEYgU29ja2V0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRpbmtlcmluZyB3aXRoIGBuZXQvaXB2NC90Y3BfYnBmLmNgLCBzcGVjaWZpY2FsbHksIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBmZXcgbmV3IGZ1bmN0aW9uczogYHNrX3Bzb2NrX2dldGAsIGBza19wc29ja19nZXRfbXNnX2xlbl9ub2xvY2tgLCBgdGNwX2lucWAsIGFuZCBgc2tfcHNvY2tfcHV0YC4gQmFzZWQgb24gdGhlIG5hbWVzIGFsb25lLCBJJ20gZ3Vlc3NpbmcgdGhlc2UgYXJlIHJlbGF0ZWQgdG8gcGFja2V0IHNvY2tldCBpbnRlcmFjdGlvbiwgcHJvYmFibHkgZm9yIGdldHRpbmcgZGF0YSBvciBtYW5hZ2luZyBidWZmZXIgc2l6ZXMgbW9yZSBlZmZpY2llbnRseSB3aXRoaW4gdGhlIEJQRiBjb250ZXh0LlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBgU0lPQ0lOUWAgKG9yIHRoZSBlcXVpdmFsZW50IG9mIGEgYEZJT05SRUFEYCBjYWxsKSBpcyBoYW5kbGVkIGZvciBUQ1AgQlBGIHNvY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRoZSBhbW91bnQgb2YgZGF0YSBhdmFpbGFibGUgaW4gdGhlIHNvY2tldCBidWZmZXIgYW5kIHJldHVybmluZyB0aGUgY29ycmVjdCBzaXplIGlzIGNydWNpYWwgZm9yIHByb3BlciBCUEYgc29ja2V0IGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gaXRzZWxmIHRvIHNlZSAqZXhhY3RseSogaG93IHRoZXkndmUgcmV3aXJlZCB0aGUgbG9naWMgdGhlcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBleGlzdGluZyBmbG93IHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSBpdCdzIGltcHJvdmluZyBob3cgQlBGIGNhbiBpbnRlcmFjdCB3aXRoIGluY29taW5nIGRhdGEsIHdoaWNoLCBpZiBkb25lIHJpZ2h0LCBjb3VsZCByZWFsbHkgb3BlbiB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIExldCdzIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjM5LjM0NjgxNzIzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxMjgyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2JwZl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jPTIyMT1zdGF0aWMgaW50IHRjcF9icGZfcmVjdm1zZ19wYXJzZXIoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTMzNC1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MzM1OnN0YXRpYyBpbnQgdGNwX2JwZl9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIGludCAqa2FyZylcXG5uZXQvaXB2NC90Y3BfYnBmLmMtMzM2LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02Mzc9c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NDQtXFx0cHJvdFtUQ1BfQlBGX0JBU0VdLnNvY2tfaXNfcmVhZGFibGVcXHQ9IHNrX21zZ19pc19yZWFkYWJsZTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjQ1OlxcdHByb3RbVENQX0JQRl9CQVNFXS5pb2N0bFxcdFxcdD0gdGNwX2JwZl9pb2N0bDtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTozOS40NTM5NDk1ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDIzOTUxMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhbmQgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgdGNwX2JwZl9pb2N0bGAuIFRoYXQncyBpbnRlcmVzdGluZywgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBpdCAqcmVhY2hhYmxlKj8gQWxyaWdodCwgaXQgbG9va3MgbGlrZSB0aGlzIGB0Y3BfYnBmX2lvY3RsYCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBhbiBgaW9jdGxgIGNhbGwgb24gYSBUQ1Agc29ja2V0IHRoYXQncyBiZWVuIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAuIFllcywgdGhhdCBzb3VuZHMgZXhwbG9pdGFibGUgYW5kIHRoZXJlZm9yZSB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCBhY3R1YWxseSBnZXRzIGNvbXBpbGVkIGluLiBNeSBodW5jaCBpcyBpdCdzIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQsIHByb2JhYmx5LCBgQ09ORklHX05FVF9TT0NLX01TR2Agb3Igc29tZXRoaW5nIHJlbGF0ZWQuIFRpbWUgdG8gY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYCB0byBjb25maXJtIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgbmFpbCBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIGZsYWdzLiBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byByZXByb2R1Y2luZyB0aGlzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzUyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAxOjUxOjQzLjQ3NzkwMjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzIyNDA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo0My41NzExMzIxODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEzOTE0MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBgQ09ORklHX05FVF9TT0NLX01TR2AgYW5kIEJleW9uZCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHJlcXVpcmVtZW50IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBDT05GSUdfTkVUX1NPQ0tfTVNHYC4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb24gYSBjbG9zZWx5IHJlbGF0ZWQgZmVhdHVyZTogYENPTkZJR19CUEZfU1lTQ0FMTGAuIEluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBJJ2QgYmV0IG1vbmV5IHRoYXQgYENPTkZJR19ORVRfU09DS19NU0dgICpsaWtlbHkqIHB1bGxzIGluIGBDT05GSUdfQlBGX1NZU0NBTExgIGFzIGEgZGVwZW5kZW5jeS4gSXQncyBhbG1vc3QgYSBnaXZlbiBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZWxhdGlvbnNoaXAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vdCBzb21ldGhpbmcgb2RkIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NDYuODg1MDQ4OTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc0ODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NPQ0tfTVNHXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ3NT1jb25maWcgTkVUX1NFTEZURVNUU1xcbi0tXFxubmV0L0tjb25maWctNDc4LVxcbm5ldC9LY29uZmlnOjQ3OTpjb25maWcgTkVUX1NPQ0tfTVNHXFxubmV0L0tjb25maWctNDgwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NDcuMDMzODAxNzQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNTQ3NzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBORVRfU09DS19NU0dgIFNlbGVjdG9yKipcblxuQWxyaWdodCwgbXkgZmlyc3QgaW5zdGluY3Qgd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSBgTkVUX1NPQ0tfTVNHYCBpcyB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBiZWluZyBzZWxlY3RlZCBhbmQgd2h5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgc2VsZWN0b3JzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gbmV0d29yayBzb2NrZXRzLCBhcmUgdXN1YWxseSBwYXJ0IG9mIGEgbGFyZ2VyIG1lY2hhbmlzbSBmb3IgZXZlbnQgbm90aWZpY2F0aW9uIG9yIGRlbXVsdGlwbGV4aW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgc2VsZWN0b3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNvZGUuIFNvLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgYE5FVF9TT0NLX01TR2AgaXMgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIHRoZSByZWxldmFudCBjb2RlYmFzZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgc2VhcmNoaW5nIGZvciB3aGVyZSBpdCdzICpzZWxlY3RlZCouIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZXNzZW50aWFsIGNvbnRleHQgYW5kIHJldmVhbCB0aGUgcHVycG9zZSBiZWhpbmQgaXQuIE9uY2UgSSBpZGVudGlmeSB0aGUgc2VsZWN0aW5nIGNvZGUgSSBjYW4gZGV0ZXJtaW5lIHRoZSBpbnRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NjEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo1MC4yNDkyODA4NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODgxMjk2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMzLVxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxua2VybmVsL2JwZi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbi0tXFxubmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzg1LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L2lwdjQvS2NvbmZpZzozODY6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY0L0tjb25maWctMzg3LVxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMTo1MTo1My4xMzc0MTc1MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1NzM2MjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU29ja21hcCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBCUEZfU1lTQ0FMTGAgbWVjaGFuaXNtIGlzIHRoZSBrZXkgdG8gYWN0aXZhdGluZyB0aGUgYE5FVF9TT0NLX01TR2AgZnVuY3Rpb25hbGl0eSwgYW5kIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGRlYWxzIHdpdGggc29ja21hcHMsIHdoaWNoIGluaGVyZW50bHkgcmVseSBvbiBgQlBGX1NZU0NBTExgLiBTaW5jZSB0aGlzIGlzIGEgcGF0Y2ggZGVhbGluZyB3aXRoIG5ldyBmdW5jdGlvbmFsaXR5LCBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IG9uIHRoZSBgdGNwX2JwZl9pb2N0bGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgLiBUaGF0IGlzIHRoZSBmb2NhbCBwb2ludDsgaXQgaXMgYSBjbGVhciBzcG90IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiB0aGF0IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucywgYEJQRl9TWVNDQUxMYCBhbmQgYE5FVF9TT0NLX01TR2AsIGFyZSBjb3JyZWN0bHkgc2V0LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IGB0Y3BfYnBmX2lvY3RsYCBpcyB0aGUgKm9ubHkqIHJlbGV2YW50IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUuIEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGFueXRoaW5nLiBHaXZlbiB0aGF0IHRoZSBwYXRjaCAqaXMqIG1vZGlmeWluZyBgdGNwX2JwZl9pb2N0bGAsIG15IGd1dCB0ZWxscyBtZSB0aGlzIGFyZWEgd2FycmFudHMgZnV6emluZy4gVGhlIGNoYW5nZXMgY291bGQgaW50cm9kdWNlIHN1YnRsZSBidWdzLCBwZXJmb3JtYW5jZSBpc3N1ZXMsIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgYW5kIGZ1enppbmcgc2VlbXMgYSBwcnVkZW50IG5leHQgc3RlcCB0byB0cnkgdG8gaWRlbnRpZnkgYW55IGlzc3Vlcy5cblxuTm93LCBsZXQncyBjb2RpZnkgdGhpcyBpbnRvIGEgcGxhbiBvZiBhY3Rpb24uIEknbSByZWFkeSB0byBkb2N1bWVudCB0aGVzZSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5NCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDE6NTE6NTcuOTk0NzgyMTU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNjE2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUX1NPQ0tfTVNHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y3BfYnBmX2lvY3RsYCBpbiBgbmV0L2lwdjQvdGNwX2JwZi5jYCB0byBjb3JyZWN0bHkgYWNjb3VudCBmb3IgaW5ncmVzcyBkYXRhIGluIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIGEgdmVyZGljdCBwcm9ncmFtIGlzIG5vdCBhdHRhY2hlZCB0byBhIHNvY2ttYXAgc29ja2V0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVhY2hhYmxlIHZpYSBgaW9jdGxgIG9uIGEgVENQIHNvY2tldCBpbiBhIEJQRiBzb2NrbWFwLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRfU09DS19NU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRjcF9icGZfaW9jdGxgIGluIGBuZXQvaXB2NC90Y3BfYnBmLmNgIHRvIGNvcnJlY3RseSBhY2NvdW50IGZvciBpbmdyZXNzIGRhdGEgaW4gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gYSB2ZXJkaWN0IHByb2dyYW0gaXMgbm90IGF0dGFjaGVkIHRvIGEgc29ja21hcCBzb2NrZXQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWFjaGFibGUgdmlhIGBpb2N0bGAgb24gYSBUQ1Agc29ja2V0IGluIGEgQlBGIHNvY2ttYXAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmkc62[1] Phase: Succeeded StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 01:52:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 01:52:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2] Phase: Succeeded StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 01:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 01:52:09 +0000 UTC FinishedAt: 2026-07-08 01:52:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowmkc62/series-workflowmkc62-convert-artifact-3765395105/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 01:52:30 +0000 UTC FinishedAt: 2026-07-08 02:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 01:52:30 +0000 UTC FinishedAt: 2026-07-08 02:17:18 +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:*a23493e0-5d99-40eb-868b-b92cd378001f,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-workflowmkc62/series-workflowmkc62-convert-artifact-3765395105/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": "d885dde9-a666-4634-857d-0d92188317bd", "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-workflowmkc62/series-workflowmkc62-build-action-3236967887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 01:52:30 +0000 UTC FinishedAt: 2026-07-08 02:17:08 +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:*a23493e0-5d99-40eb-868b-b92cd378001f,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-workflowmkc62/series-workflowmkc62-convert-artifact-3765395105/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": "d885dde9-a666-4634-857d-0d92188317bd", "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-workflowmkc62/series-workflowmkc62-build-action-3236967887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 02:17:18 +0000 UTC FinishedAt: 2026-07-08 02:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 02:17:18 +0000 UTC FinishedAt: 2026-07-08 02:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 02:17:18 +0000 UTC FinishedAt: 2026-07-08 02:17:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 02:17:18 +0000 UTC FinishedAt: 2026-07-08 02:17:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowmkc62/series-workflowmkc62-convert-artifact-2183683316/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 02:17:28 +0000 UTC FinishedAt: 2026-07-08 02:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 02:17:28 +0000 UTC FinishedAt: 2026-07-08 02:19:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d885dde9-a666-4634-857d-0d92188317bd,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-workflowmkc62/series-workflowmkc62-build-action-3236967887/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-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 02:19:29 +0000 UTC FinishedAt: 2026-07-08 02:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 02:19:29 +0000 UTC FinishedAt: 2026-07-08 02:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 02:19:29 +0000 UTC FinishedAt: 2026-07-08 03:30:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 02:19:29 +0000 UTC FinishedAt: 2026-07-08 03:30:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a23493e0-5d99-40eb-868b-b92cd378001f,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-workflowmkc62/series-workflowmkc62-convert-artifact-2183683316/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": "a834c3a2-e9ad-40e2-ba71-6a60f92fcdcf", "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-workflowmkc62/series-workflowmkc62-build-action-1650825325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Failed StartedAt: 2026-07-08 02:19:29 +0000 UTC FinishedAt: 2026-07-08 02:50:34 +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:*a23493e0-5d99-40eb-868b-b92cd378001f,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-workflowmkc62/series-workflowmkc62-convert-artifact-2183683316/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:*,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-workflowmkc62/series-workflowmkc62-build-action-912757184/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*143,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(1) Phase: Succeeded StartedAt: 2026-07-08 03:00:16 +0000 UTC FinishedAt: 2026-07-08 03:29:54 +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:*a23493e0-5d99-40eb-868b-b92cd378001f,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-workflowmkc62/series-workflowmkc62-convert-artifact-2183683316/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": "a834c3a2-e9ad-40e2-ba71-6a60f92fcdcf", "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-workflowmkc62/series-workflowmkc62-build-action-1650825325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 03:30:04 +0000 UTC FinishedAt: 2026-07-08 03:30:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 03:30:04 +0000 UTC FinishedAt: 2026-07-08 03:30:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 03:30:04 +0000 UTC FinishedAt: 2026-07-08 03:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 03:30:04 +0000 UTC FinishedAt: 2026-07-08 03:32:00 +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:*a834c3a2-e9ad-40e2-ba71-6a60f92fcdcf,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-workflowmkc62/series-workflowmkc62-build-action-1650825325/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-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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:*d885dde9-a666-4634-857d-0d92188317bd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a834c3a2-e9ad-40e2-ba71-6a60f92fcdcf,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-workflowmkc62/series-workflowmkc62-build-action-3236967887/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-workflowmkc62/series-workflowmkc62-build-action-1650825325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 03:32:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 03:32:14 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"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-workflowmkc62/series-workflowmkc62-convert-artifact-2682026781/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 03:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 03:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 03:32:10 +0000 UTC FinishedAt: 2026-07-08 03:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 03:32:20 +0000 UTC FinishedAt: 2026-07-08 06:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmkc62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d2c9a99135da931377240942d44f3dea104cedb8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET_SOCK_MSG"],"series_id":"9e508079-79f1-4aa2-a0e9-4836e63eaeb4","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 03:32:20 +0000 UTC FinishedAt: 2026-07-08 06:33:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d885dde9-a666-4634-857d-0d92188317bd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a834c3a2-e9ad-40e2-ba71-6a60f92fcdcf,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-workflowmkc62/series-workflowmkc62-build-action-3236967887/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-workflowmkc62/series-workflowmkc62-build-action-1650825325/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-workflowmkc62/series-workflowmkc62-convert-artifact-2682026781/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,}