Name: series-workflow7c2zt Phase: Succeeded StartedAt: 2026-07-14 20:10:55 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[0] Phase: Succeeded StartedAt: 2026-07-14 20:10:55 +0000 UTC FinishedAt: 2026-07-14 20:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 20:10:55 +0000 UTC FinishedAt: 2026-07-14 20:44:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DPLL", "MLX5_DPLL", "PTP_1588_CLOCK_OCP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DPLL", "MLX5_DPLL", "PTP_1588_CLOCK_OCP" ], "series_id": "5a458fdb-163d-4864-b06a-d8c0e76d6db9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dpll_pin_own_dpll_ref_first", "dpll_cmd_pin_get_one", "dpll_pin_freq_set", "dpll_pin_esync_set", "dpll_pin_ref_sync_state_set", "dpll_pin_phase_adj_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQTEwmIzM0OywKICAgICYjMzQ7TUxYNV9EUExMJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX09DUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCYjMzQ7LAogICAgJiMzNDtkcGxsX2NtZF9waW5fZ2V0X29uZSYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9mcmVxX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9lc3luY19zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3BoYXNlX2Fkal9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgb3duZXIgRFBMTCByZWZlcmVuY2Ugb2YgYSBwaW4gYW5kIGFkZHMgY2hlY2tzIHRvIHByZXZlbnQgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHJlZmVyZW5jZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKG5ldGxpbmsgaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDo0MzowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmNcbmluZGV4IGJiMWU4NjUwYzlkNTkwLi4yNDVmNjI1ZjRiM2I0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXG5AQCAtMTE0Niw2ICYjNDM7MTE0NiwzMyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCxcbiBcdHJldHVybiByZWctXHUwMDNlcHJpdjtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QgLSBmaW5kIHRoZSBmaXJzdCBvd25lciBkcGxsIHJlZiBvZiBhIHBpblxuJiM0MzsgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cbiYjNDM7ICpcbiYjNDM7ICogU2VhcmNoIHBpbiYjMzk7cyBkcGxsX3JlZnMgZm9yIGEgcmVmIHdob3NlIGRwbGwgbWF0Y2hlcyB0aGUgcGluJiMzOTtzXG4mIzQzOyAqIChtb2R1bGUsIGNsb2NrX2lkKSB0dXBsZSwgaS5lLiB0aGUgZHBsbCByZWdpc3RlcmVkIGJ5IHRoZSBkcml2ZXJcbiYjNDM7ICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmVcbiYjNDM7ICogcmVwb3J0ZWQgYW5kIG1vZGlmaWVkIHVzaW5nIHRoZSBvd25lciYjMzk7cyBvcHMgZXZlbiB3aGVuIHRoZSBwaW4gaXNcbiYjNDM7ICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG93bmVyJiMzOTtzIGRwbGxfcGluX3JlZiwgb3IgTlVMTCBpZiBub1xuJiM0MzsgKiBvd25lciByZWYgaXMgZm91bmQuXG4mIzQzOyAqL1xuJiM0MztzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBpO1xuJiM0MztcbiYjNDM7XHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiYjNDM7XHRcdGlmIChyZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpXG4mIzQzO1x0XHRcdHJldHVybiByZWY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzICpkcGxsX3Bpbl9vcHMoc3RydWN0IGRwbGxfcGluX3JlZiAqcmVmKVxuIHtcbiBcdHN0cnVjdCBkcGxsX3Bpbl9yZWdpc3RyYXRpb24gKnJlZztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmggYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcbmluZGV4IGUyNDU3NzExMzQzMTczLi5kYThhMzY5NTU2ZWQxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oXG5AQCAtOTMsNiAmIzQzOzkzLDcgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsIHN0cnVjdCBkcGxsX3BpbiAqcGluKTtcbiBcbiBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZpY2Vfb3BzICpkcGxsX2RldmljZV9vcHMoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsKTtcbiBzdHJ1Y3QgZHBsbF9kZXZpY2UgKmRwbGxfZGV2aWNlX2dldF9ieV9pZChpbnQgaWQpO1xuJiM0MztzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pO1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xuIHN0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfeGFfcmVmX2RwbGxfZmlyc3Qoc3RydWN0IHhhcnJheSAqeGFfcmVmcyk7XG4gZXh0ZXJuIHN0cnVjdCB4YXJyYXkgZHBsbF9kZXZpY2VfeGE7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXG5pbmRleCBiZjcyOWNkZTc5NmE3Ny4uYjNmMGNiN2QzZDM0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xuQEAgLTY5Niw3ICYjNDM7Njk2LDkgQEAgZHBsbF9jbWRfcGluX2dldF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZilcbiYjNDM7XHRcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4gXHRBU1NFUlRfTk9UX05VTEwocmVmKTtcbiBcbiBcdHJldCA9IGRwbGxfbXNnX2FkZF9waW5faGFuZGxlKG1zZywgcGluKTtcbkBAIC0xMDg3LDEyICYjNDM7MTA4OSwxOSBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldCB8fCAhb3BzLVx1MDAzZWZyZXF1ZW5jeV9nZXQpIHtcbi1cdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O2ZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXCYjMzQ7KTtcbiYjNDM7XHRcdGlmICgoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXHUwMDNlZnJlcXVlbmN5X2dldCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlbW9kdWxlID09IHBpbi1cdTAwM2Vtb2R1bGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlY2xvY2tfaWQgPT0gcGluLVx1MDAzZWNsb2NrX2lkKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICAgICAgXCYjMzQ7ZnJlcXVlbmN5IHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxuQEAgLTExMDYsNiAmIzQzOzExMTUsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7XG5AQCAtMTEyNSw2ICYjNDM7MTEzNiw4IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFx0XHRpZiAocmVmID09IGZhaWxlZClcbiBcdFx0XHRicmVhaztcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxuQEAgLTExNDgsMTMgJiM0MzsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXHUwMDNlZXN5bmNfZ2V0KSB7XG4mIzQzO1x0XHRpZiAoKCFvcHMtXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXHUwMDNlZXN5bmNfZ2V0KSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4gXHRcdFx0XHQgICAgICAgXCYjMzQ7ZW1iZWRkZWQgc3luYyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2VcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZXN5bmNfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsXG5AQCAtMTE3OCw2ICYjNDM7MTE5Nyw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcdFx0dm9pZCAqcGluX2RwbGxfcHJpdjtcbiBcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHBpbl9kcGxsX3ByaXYgPSBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKTtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcbkBAIC0xMjAxLDYgJiM0MzsxMjIyLDggQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFx0XHRpZiAocmVmID09IGZhaWxlZClcbiBcdFx0XHRicmVhaztcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHBpbl9kcGxsX3ByaXYgPSBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKTtcbiBcdFx0aWYgKG9wcy1cdTAwM2Vlc3luY19zZXQocGluLCBwaW5fZHBsbF9wcml2LCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksXG5AQCAtMTIzNSw4ICYjNDM7MTI1OCwxMSBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7cmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGVcJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4tXHRBU1NFUlRfTk9UX05VTEwocmVmKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRpZiAoIW9wcy1cdTAwM2VyZWZfc3luY19zZXQgfHwgIW9wcy1cdTAwM2VyZWZfc3luY19nZXQpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluXCYjMzQ7KTtcbkBAIC0xMjU1LDYgJiM0MzsxMjgxLDggQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxuIFx0XHRyZXR1cm4gMDtcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZXJlZl9zeW5jX3NldClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0XHRyZWZfc3luY19waW4sXG5AQCAtMTI3Nyw2ICYjNDM7MTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdFx0aWYgKHJlZiA9PSBmYWlsZWQpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuJiM0MztcdFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0ICAgICAgcmVmX3N5bmNfcGluLFxuQEAgLTE0NjgsMTIgJiM0MzsxNDk4LDE4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuLVx0XHRpZiAoIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3Rfc2V0IHx8ICFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkge1xuJiM0MztcdFx0aWYgKCghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O3BoYXNlIGFkanVzdCBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4mIzQzO1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4mIzQzO1x0aWYgKCFyZWYpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7cGluIG93bmVyIGRwbGwgbm90IGZvdW5kXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdH1cbiBcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuIFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0cmV0ID0gb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbkBAIC0xNDg4LDYgJiM0MzsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3Rfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldChwaW4sXG4gXHRcdFx0XHRcdCAgICBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbkBAIC0xNTEwLDYgJiM0MzsxNTQ4LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdGlmIChvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0XHQgIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwgb2xkX3BoYXNlX2FkaixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUExMJiMzNDssCiAgICAmIzM0O01MWDVfRFBMTCYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19PQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QmIzM0OywKICAgICYjMzQ7ZHBsbF9jbWRfcGluX2dldF9vbmUmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZnJlcV9zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZXN5bmNfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9waGFzZV9hZGpfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUExMIHN1YnN5c3RlbSYjMzk7cyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAyMDo0MzowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYwppbmRleCBiYjFlODY1MGM5ZDU5MC4uMjQ1ZjYyNWY0YjNiNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMKQEAgLTExNDYsNiAmIzQzOzExNDYsMzMgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsCiAJcmV0dXJuIHJlZy0mZ3Q7cHJpdjsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCAtIGZpbmQgdGhlIGZpcnN0IG93bmVyIGRwbGwgcmVmIG9mIGEgcGluCiYjNDM7ICogQHBpbjogcG9pbnRlciB0byBhIGRwbGwgcGluCiYjNDM7ICoKJiM0MzsgKiBTZWFyY2ggcGluJiMzOTtzIGRwbGxfcmVmcyBmb3IgYSByZWYgd2hvc2UgZHBsbCBtYXRjaGVzIHRoZSBwaW4mIzM5O3MKJiM0MzsgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyCiYjNDM7ICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmUKJiM0MzsgKiByZXBvcnRlZCBhbmQgbW9kaWZpZWQgdXNpbmcgdGhlIG93bmVyJiMzOTtzIG9wcyBldmVuIHdoZW4gdGhlIHBpbiBpcwomIzQzOyAqIGFsc28gcmVnaXN0ZXJlZCB3aXRoIGRwbGxzIGZyb20gb3RoZXIgZHJpdmVycy4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogcG9pbnRlciB0byB0aGUgb3duZXImIzM5O3MgZHBsbF9waW5fcmVmLCBvciBOVUxMIGlmIG5vCiYjNDM7ICogb3duZXIgcmVmIGlzIGZvdW5kLgomIzQzOyAqLwomIzQzO3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjsKJiM0MzsJdW5zaWduZWQgbG9uZyBpOwomIzQzOwomIzQzOwl4YV9mb3JfZWFjaCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzLCBpLCByZWYpIHsKJiM0MzsJCWlmIChyZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKQomIzQzOwkJCXJldHVybiByZWY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGRwbGxfcGluX29wcyAqZHBsbF9waW5fb3BzKHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZikKIHsKIAlzdHJ1Y3QgZHBsbF9waW5fcmVnaXN0cmF0aW9uICpyZWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmggYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmgKaW5kZXggZTI0NTc3MTEzNDMxNzMuLmRhOGEzNjk1NTZlZDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCwgc3RydWN0IGRwbGxfcGluICpwaW4pOwogCiBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZpY2Vfb3BzICpkcGxsX2RldmljZV9vcHMoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsKTsKIHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbF9kZXZpY2VfZ2V0X2J5X2lkKGludCBpZCk7CiYjNDM7c3RydWN0IGRwbGxfcGluX3JlZiAqZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHN0cnVjdCBkcGxsX3BpbiAqcGluKTsKIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpOwogc3RydWN0IGRwbGxfcGluX3JlZiAqZHBsbF94YV9yZWZfZHBsbF9maXJzdChzdHJ1Y3QgeGFycmF5ICp4YV9yZWZzKTsKIGV4dGVybiBzdHJ1Y3QgeGFycmF5IGRwbGxfZGV2aWNlX3hhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jCmluZGV4IGJmNzI5Y2RlNzk2YTc3Li5iM2YwY2I3ZDNkMzQ5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuYwpAQCAtNjk2LDcgJiM0Mzs2OTYsOSBAQCBkcGxsX2NtZF9waW5fZ2V0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAlzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7CiAJaW50IHJldDsKIAotCXJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoJmFtcDtwaW4tJmd0O2RwbGxfcmVmcyk7CiYjNDM7CXJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pOwomIzQzOwlpZiAoIXJlZikKJiM0MzsJCXJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoJmFtcDtwaW4tJmd0O2RwbGxfcmVmcyk7CiAJQVNTRVJUX05PVF9OVUxMKHJlZik7CiAKIAlyZXQgPSBkcGxsX21zZ19hZGRfcGluX2hhbmRsZShtc2csIHBpbik7CkBAIC0xMDg3LDEyICYjNDM7MTA4OSwxOSBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQgfHwgIW9wcy0mZ3Q7ZnJlcXVlbmN5X2dldCkgewotCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O2ZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlJiMzNDspOwomIzQzOwkJaWYgKCghb3BzLSZndDtmcmVxdWVuY3lfc2V0IHx8ICFvcHMtJmd0O2ZyZXF1ZW5jeV9nZXQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLAomIzQzOwkJCQkgICAgICAgJiMzNDtmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSYjMzQ7KTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJcmV0ID0gb3BzLSZndDtmcmVxdWVuY3lfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsCkBAIC0xMTA2LDYgJiM0MzsxMTE1LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAKIAl4YV9mb3JfZWFjaCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzLCBpLCByZWYpIHsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZnJlcXVlbmN5X3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJcmV0ID0gb3BzLSZndDtmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksCiAJCQkJCSBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7CkBAIC0xMTI1LDYgJiM0MzsxMTM2LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAJCWlmIChyZWYgPT0gZmFpbGVkKQogCQkJYnJlYWs7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQpCiYjNDM7CQkJY29udGludWU7CiAJCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJCWlmIChvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkgICAgICAgZHBsbCwgZHBsbF9wcml2KGRwbGwpLCBvbGRfZnJlcSwgZXh0YWNrKSkKQEAgLTExNDgsMTMgJiM0MzsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O2VzeW5jX3NldCB8fCAhb3BzLSZndDtlc3luY19nZXQpIHsKJiM0MzsJCWlmICgoIW9wcy0mZ3Q7ZXN5bmNfc2V0IHx8ICFvcHMtJmd0O2VzeW5jX2dldCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHJlZi0mZ3Q7ZHBsbC0mZ3Q7bW9kdWxlID09IHBpbi0mZ3Q7bW9kdWxlICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O2Nsb2NrX2lkID09IHBpbi0mZ3Q7Y2xvY2tfaWQpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKIAkJCQkgICAgICAgJiMzNDtlbWJlZGRlZCBzeW5jIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGRldmljZSYjMzQ7KTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJcmV0ID0gb3BzLSZndDtlc3luY19nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwgZHBsbCwKQEAgLTExNzgsNiAmIzQzOzExOTcsOCBAQCBkcGxsX3Bpbl9lc3luY19zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAJCXZvaWQgKnBpbl9kcGxsX3ByaXY7CiAKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZXN5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlwaW5fZHBsbF9wcml2ID0gZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbik7CiAJCXJldCA9IG9wcy0mZ3Q7ZXN5bmNfc2V0KHBpbiwgcGluX2RwbGxfcHJpdiwgZHBsbCwgZHBsbF9wcml2KGRwbGwpLApAQCAtMTIwMSw2ICYjNDM7MTIyMiw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZXN5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlwaW5fZHBsbF9wcml2ID0gZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbik7CiAJCWlmIChvcHMtJmd0O2VzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwKQEAgLTEyMzUsOCAmIzQzOzEyNTgsMTEgQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLAogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGUmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwotCUFTU0VSVF9OT1RfTlVMTChyZWYpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWlmICghb3BzLSZndDtyZWZfc3luY19zZXQgfHwgIW9wcy0mZ3Q7cmVmX3N5bmNfZ2V0KSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluJiMzNDspOwpAQCAtMTI1NSw2ICYjNDM7MTI4MSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAkJcmV0dXJuIDA7CiAJeGFfZm9yX2VhY2goJmFtcDtwaW4tJmd0O2RwbGxfcmVmcywgaSwgcmVmKSB7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O3JlZl9zeW5jX3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJcmV0ID0gb3BzLSZndDtyZWZfc3luY19zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkJcmVmX3N5bmNfcGluLApAQCAtMTI3Nyw2ICYjNDM7MTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7cmVmX3N5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlpZiAob3BzLSZndDtyZWZfc3luY19zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkgICAgICByZWZfc3luY19waW4sCkBAIC0xNDY4LDEyICYjNDM7MTQ5OCwxOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0ciwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O3BoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy0mZ3Q7cGhhc2VfYWRqdXN0X2dldCkgewomIzQzOwkJaWYgKCghb3BzLSZndDtwaGFzZV9hZGp1c3Rfc2V0IHx8ICFvcHMtJmd0O3BoYXNlX2FkanVzdF9nZXQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cGhhc2UgYWRqdXN0IG5vdCBzdXBwb3J0ZWQmIzM0Oyk7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAl9Ci0JcmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzKTsKJiM0MzsJcmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7CiYjNDM7CWlmICghcmVmKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cGluIG93bmVyIGRwbGwgbm90IGZvdW5kJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CX0KIAlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKIAlkcGxsID0gcmVmLSZndDtkcGxsOwogCXJldCA9IG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLApAQCAtMTQ4OCw2ICYjNDM7MTUyNCw4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLAogCiAJeGFfZm9yX2VhY2goJmFtcDtwaW4tJmd0O2RwbGxfcmVmcywgaSwgcmVmKSB7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O3BoYXNlX2FkanVzdF9zZXQpCiYjNDM7CQkJY29udGludWU7CiAJCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJCXJldCA9IG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldChwaW4sCiAJCQkJCSAgICBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKQEAgLTE1MTAsNiAmIzQzOzE1NDgsOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0ciwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJaWYgKG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLAogCQkJCQkgIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwgb2xkX3BoYXNlX2FkaiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEUExMIFN1YnN5c3RlbSBQYXRjaCBBbmFseXNpcyAmYW1wOyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdG91Y2hpbmcgdGhlIERQTEwgY29yZSDigJMgc3BlY2lmaWNhbGx5IGBkcGxsX2NvcmUuY2AsIGBkcGxsX2NvcmUuaGAsIGFuZCBgZHBsbF9uZXRsaW5rLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0YC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBwdXJwb3NlIGlzIHRvIHByb3ZpZGUgYSBtb3JlIHNwZWNpZmljIHdheSB0byBmaW5kIHRoZSBpbml0aWFsIERQTEwgcmVmZXJlbmNlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgcGluLgoKQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGNhbGxzIHRvIGBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0YCB3aXRoIHRoaXMgbmV3IGZ1bmN0aW9uIHdpdGhpbiBhIGJ1bmNoIG9mIGNyaXRpY2FsIERQTEwgb3BlcmF0aW9uczogYGRwbGxfY21kX3Bpbl9nZXRfb25lYCwgYGRwbGxfcGluX2ZyZXFfc2V0YCwgYGRwbGxfcGluX2VzeW5jX3NldGAsIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgLCBhbmQgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgZWl0aGVyIGNsYXJpdHkgb3IgY29ycmVjdG5lc3Mgd2l0aGluIHRoZSBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcgdXNlZCBmb3IgdGhlIERQTEwgc3Vic3lzdGVtLiBBZGRpdGlvbmFsbHksIEkgc2VlIHRoZXkmIzM5O3JlIGFkZGluZyBpbiBjaGVja3MgdG8gc2VlIGlmIGBvcHMtJmd0O2ZyZXF1ZW5jeV9zZXRgIGV0YyBhcmUgdmFsaWQgdG8gcHJldmVudCBjcmFzaGVzIOKAkyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYnV0IHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgd2hlbiBmdXp6aW5nLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBEUExMIHN5c3RlbSwgd2hpY2ggd2Uga25vdyBpcyBleHBvc2VkIHZpYSBuZXRsaW5rLiBHaXZlbiB0aGlzIHRvdWNoIG9uIGNvcmUgZnVuY3Rpb25hbGl0eSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKmZ1enppbmcqLiBXZSBuZWVkIHRvIHRob3JvdWdobHkgdGVzdCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIG5ldGxpbmstYWNjZXNzaWJsZS4gQW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaGVyZSBjb3VsZCBiZSBleHBsb2l0ZWQgcmVtb3RlbHkuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIERQTEwuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IGBDT05GSUdfRFBMTGAgc2V0dGluZ3MuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBEUExMIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCwgdGhlcmVmb3JlLCBob3cgaXQgY2FuIGJlIHRhcmdldGVkIGJ5IGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHdoaWNoIG9uZXMgYXJlIGRpc2FibGVkLCBzbyBJIGNhbiBlbnN1cmUgYSBmdWxsIGNvdmVyYWdlIG9mIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFBMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvS2NvbmZpZz02PW1lbnUgXCYjMzQ7RFBMTCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9kcGxsL0tjb25maWctNy1cbmRyaXZlcnMvZHBsbC9LY29uZmlnOjg6Y29uZmlnIERQTExcbmRyaXZlcnMvZHBsbC9LY29uZmlnLTktXHRib29sXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMC1cbmRyaXZlcnMvZHBsbC9LY29uZmlnOjExOmNvbmZpZyBEUExMX1JFRkNOVF9UUkFDS0VSXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMi1cdGJvb2wgXCYjMzQ7RFBMTCByZWZlcmVuY2UgY291bnQgdHJhY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19EUExMYCBEZXBlbmRlbmN5KioKClJpZ2h0LCBgQ09ORklHX0RQTExgIGlzIGEgYm9vbGVhbiwgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aG8mIzM5O3MgKnVzaW5nKiB0aGlzPyBJdOKAmXMgdXN1YWxseSBzZWxlY3RlZCBieSBkcml2ZXJzLiBJdCYjMzk7cyB0aW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBDT05GSUdfRFBMTGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgaGVyZSB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGhlbHBzIG1lIG5hcnJvdyBkb3duIHdoZXJlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBwcm9ibGVtcyBvciBvcHRpbWl6YXRpb25zLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgaXQsIG9mIGNvdXJzZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFBMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTUtXHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZzo2Olx0c2VsZWN0IERQTExcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNy1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNS1cdHNlbGVjdCBQTERNRldcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzA2Olx0c2VsZWN0IERQTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIwMz1jb25maWcgTUxYNV9EUExMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjA1LVx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBFVEhFUk5FVCBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjIwNjpcdHNlbGVjdCBEUExMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDctXHRoZWxwXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjE5LVx0c2VsZWN0IENSQzE2XG5kcml2ZXJzL3B0cC9LY29uZmlnOjIyMDpcdHNlbGVjdCBEUExMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRFBMTCBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIERQTEwgc3Vic3lzdGVtIGlzIGJlaW5nIGJyb3VnaHQgaW4gYnkgYSBmZXcgZGlmZmVyZW50IGRyaXZlcnM6IGBJQ0VgLCBgTUxYNV9EUExMYCwgYFBUUF8xNTg4X0NMT0NLX09DUGAsIGFuZCBgWkwzMDczWGAuIE1ha2VzIHNlbnNlLCBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNsb2NraW5nIGVsZW1lbnQuIFRoZSBjb2RlJiMzOTtzIG1ha2luZyBpdCBjbGVhciB0aGF0IGBEUExMYCBpcyBhIGNvcmUgc3Vic3lzdGVtIGFuZCwgc2luY2UgaXQmIzM5O3MgZGVmaW5lZCBhcyBhIGJvb2xlYW4gd2l0aG91dCBhIHByb21wdCwgdGhlIG9ubHkgd2F5IGl0IGdldHMgZW5hYmxlZCBpcyB0aHJvdWdoIGEgc2VsZWN0aW9uLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCB0aGVvcmV0aWNhbGx5LiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2RwbGwvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBzZWxlY3Rpb24gd29ya3MsIGFyZSB0aGVyZSBmdXJ0aGVyIGRlcGVuZGVuY2llcz8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIHNjaGVtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgR2VuZXJpYyBEUExMIGRyaXZlcnMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O0RQTEwgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgRFBMTFxuICAgOTpcdFx0Ym9vbFxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBEUExMX1JFRkNOVF9UUkFDS0VSXG4gIDEyOlx0XHRib29sIFwmIzM0O0RQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXCYjMzQ7XG4gIDEzOlx0XHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTCBcdTAwMjZcdTAwMjYgU1RBQ0tUUkFDRV9TVVBQT1JUIFx1MDAyNlx1MDAyNiBEUExMXG4gIDE0Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgRW5hYmxlIHJlZmVyZW5jZSBjb3VudCB0cmFja2luZyBmb3IgRFBMTCBkZXZpY2VzIGFuZCBwaW5zLlxuICAxNzpcdFx0ICBUaGlzIGhlbHBzIGRlYnVnZ2luZyByZWZlcmVuY2UgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3NcbiAgMTg6XHRcdCAgYnkgcmVjb3JkaW5nIHN0YWNrIHRyYWNlcyBmb3IgZWFjaCBnZXQvcHV0IG9wZXJhdGlvbi5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgVGhlIHRyYWNraW5nIGluZm9ybWF0aW9uIGlzIGV4cG9zZWQgdmlhIGRlYnVnZnMgYXQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEUExMIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGNvbmZpZ3VyZSBEUExMIGZvciBmdXp6aW5nLiBTaW5jZSBpdCYjMzk7cyBhIGJvb2xlYW4gb3B0aW9uIGFuZCBkb2VzbiYjMzk7dCBoYXZlIGEgZGlyZWN0IHByb21wdCwgSSBjYW4mIzM5O3QganVzdCBlbmFibGUgaXQgdGhyb3VnaCBgbWFrZSBkZWZjb25maWdgIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVpdGhlciBsaXN0IGBEUExMYCBpbiB0aGUgY29uZmlnIGFuZCBob3BlIFN5emthbGxlciYjMzk7cyBzeXN0ZW0gZmlndXJlcyBpdCBvdXQsIG9yIHRvIGV4cGxpY2l0bHkgbGlzdCBhIGRyaXZlciB0aGF0IHNlbGVjdHMgaXQuIEl0JiMzOTtzIHVzdWFsbHkgc2FmZXIgdG8gYmUgZXhwbGljaXQuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgYXBwcm9hY2guIEJlY2F1c2UgaXQmIzM5O3MgYSBib29sLCBpdCYjMzk7cyBwb3NzaWJsZSBTeXprYWxsZXImIzM5O3MgY29uZmlnIHN5c3RlbSBtaWdodCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBpdCBpZiBpdCYjMzk7cyBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZS4gQnV0IEkgc3RpbGwgd2FudCB0byBiZSBwcmVjaXNlLiBJJiMzOTttIGdvaW5nIHRvIGxpc3QgYSBkcml2ZXIga25vd24gdG8gc2VsZWN0IGl0LCBsaWtlIGBaTDMwNzNYYCBvciBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCwgb3IgYERQTExgIGRpcmVjdGx5IGFzIGl0JiMzOTtzIHRoZSBjb3JlIHN1YnN5c3RlbS4KClRvIGhlbHAgd2l0aCB0aGlzLCBJJiMzOTttIGNoZWNraW5nIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgcmVsYXRlZCB0byBEUExMLCB0byBzZWUgd2hhdCB0aGV5IGZvY3VzIG9uOgoqICAgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAKKiAgIGBkcGxsX2NtZF9waW5fZ2V0X29uZWAKKiAgIGBkcGxsX3Bpbl9mcmVxX3NldGAKKiAgIGBkcGxsX3Bpbl9lc3luY19zZXRgCiogICBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YAoqICAgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgCgpUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gbmV0bGluayBoYW5kbGVycyBvciBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBpZGVhIG9mIHdoYXQmIzM5O3MgYmVlbiByZWNlbnRseSBhY3RpdmUuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgd2hlbiB0ZXN0aW5nOgoqICAgYGRwbGxfY21kX3Bpbl9nZXRfb25lYAoqICAgYGRwbGxfcGluX2ZyZXFfc2V0YAoqICAgYGRwbGxfcGluX2VzeW5jX3NldGAKKiAgIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgCiogICBgZHBsbF9waW5fcGhhc2VfYWRqX3NldGAKCk15IG5leHQgc3RlcCBpcyB0byBkb3VibGUtY2hlY2sgaWYgYERQTExgICpjYW4qIGJlIGRpcmVjdGx5IGVuYWJsZWQuIEFsdGhvdWdoIFN5emthbGxlciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIGJvb2xlYW4gb3B0aW9ucyB3aXRob3V0IGRpcmVjdCBwcm9tcHRzLCBleHBsaWNpdGx5IHNlbGVjdGluZyBhIGRyaXZlciBpcyBjbGVhbmVyIGFuZCBtb3JlIHJlbGlhYmxlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBaTDMwNzNYYCwgaW4gYGRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWdgLiBJJiMzOTtsbCBjb25maXJtIHRoYXQmIzM5O3MgYSB2YWxpZCB3YXkgdG8gZW5hYmxlIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgWkwzMDczWFxuICAgNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEF6dXJpdGUgRFBMTC9QVFAvU3luY0UgZGV2aWNlc1wmIzM0OyBpZiBDT01QSUxFX1RFU1RcbiAgIDU6XHRcdGRlcGVuZHMgb24gTkVUXG4gICA2Olx0XHRzZWxlY3QgRFBMTFxuICAgNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gICA4Olx0XHRzZWxlY3QgUkVHTUFQXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBBenVyaXRlIGZhbWlseSBEUExML1BUUC9TeW5jRVxuICAxMTpcdFx0ICBkZXZpY2VzIHRoYXQgc3VwcG9ydCB1cCB0byA1IGluZGVwZW5kZW50IERQTEwgY2hhbm5lbHMsXG4gIDEyOlx0XHQgIDEwIGlucHV0IHBpbnMgYW5kIHVwIHRvIDIwIG91dHB1dCBwaW5zLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDE1Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHpsMzA3M3guXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFpMMzA3M1hfSTJDXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNaWNyb2NoaXAgQXp1cml0ZSBkZXZpY2VzXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEkyQyBcdTAwMjZcdTAwMjYgTkVUXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqQW5hbHl6aW5nIHRoZSBaTDMwNzNYIERlY2xhcmF0aW9uKioKCk9rYXksIHNvIGBaTDMwNzNYYCBpcyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgZm9yIHRoZSAmIzM0O01pY3JvY2hpcCBBenVyaXRlIERQTEwvUFRQL1N5bmNFIGRldmljZXMuJiMzNDsgVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHNwZWNpZmljLCBhbmQgcmVsZXZhbnQsIEkmIzM5O20gYWxyZWFkeSBhd2FyZSBvZiB0aGlzIHRlY2hub2xvZ3kuIEJ1dCwgYW5kIGhlcmUmIzM5O3MgdGhlIGtpY2tlciwgKml0JiMzOTtzIG9ubHkgYWN0dWFsbHkgdmlzaWJsZSBpZiogYENPTVBJTEVfVEVTVGAgKmlzIGRlZmluZWQqLiBSaWdodCwgZ290IGl0LiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBzcGVjaWZpYyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIG5vIHN1cnByaXNlcyB0aGVyZS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGBQVFBfMTU4OF9DTE9DS19PQ1BgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBaTDMwNzNYYCBhbmQgd2hldGhlciB0aGlzIGBDT01QSUxFX1RFU1RgIGRlcGVuZGVuY3kgYWxzbyBhcHBsaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFyb3VuZCB0aGVzZSBkZWZpbml0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjEwOlx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuIDIxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4gMjEyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gMjEzOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgUENJXG4gMjE0Olx0XHRkZXBlbmRzIG9uIEkyQyBcdTAwMjZcdTAwMjYgTVREXG4gMjE1Olx0XHRkZXBlbmRzIG9uIFNFUklBTF84MjUwXG4gMjE2Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gMjE3Olx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAyMTg6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDIxOTpcdFx0c2VsZWN0IENSQzE2XG4gMjIwOlx0XHRzZWxlY3QgRFBMTFxuIDIyMTpcdFx0aGVscFxuIDIyMjpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIGFuIE9wZW5Db21wdXRlIHRpbWUgY2FyZC5cbiAyMjM6XHRcbiAyMjQ6XHRcdCAgVGhlIE9wZW5Db21wdXRlIHRpbWUgY2FyZCBpcyBhbiBhdG9taWMgY2xvY2sgYWxvbmcgd2l0aFxuIDIyNTpcdFx0ICBhIEdQUyByZWNlaXZlciB0aGF0IHByb3ZpZGVzIGEgR3JhbmRtYXN0ZXIgY2xvY2sgc291cmNlXG4gMjI2Olx0XHQgIGZvciBhIFBUUCBlbmFibGVkIG5ldHdvcmsuXG4gMjI3Olx0XG4gMjI4Olx0XHQgIE1vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudGltaW5nY2FyZC5jb20vXG4gMjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNjkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDbG9jayBhbmQgUExMIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIGBQVFBfMTU4OF9DTE9DS19PQ1BgIG91dCB0aGVyZS4gVGhhdCYjMzk7cyBnb29kLCBhIGtub3duIGZhY3Rvci4gTm93IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sICYjMzQ7T2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGBNTFg1X0RQTExgPyBXaGVyZSBpcyB0aGF0IGluIHRoZSBwaWN0dXJlPyYjMzQ7IFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY2xvY2tpbmcgYW5kIFBMTHMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGNvbXBvbmVudHMsIGFuZCB0aGVpciBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3lzdGVtLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25uZWN0aW9uIHRvIG1ha2UgdG8gZW5zdXJlIHRpbWluZyBhbmQgc3luY2hyb25pemF0aW9uIGFyZSB3b3JraW5nIGNvcnJlY3RseSwgYW5kIEkgbmVlZCB0byBjb25zaWRlciBpdCYjMzk7cyBzdGF0dXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMzpcdGNvbmZpZyBNTFg1X0RQTExcbiAyMDQ6XHRcdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRFBMTCBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuIDIwNjpcdFx0c2VsZWN0IERQTExcbiAyMDc6XHRcdGhlbHBcbiAyMDg6XHRcdCAgRFBMTCBzdXBwb3J0IGluIE1lbGxhbm94IFRlY2hub2xvZ2llcyBDb25uZWN0WCBOSUNzLlxuIDIwOTpcdFxuIDIxMDpcdGNvbmZpZyBNTFg1X0VOX1BTUFxuIDIxMTpcdFx0Ym9vbCBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgc3VwcG9ydCBmb3IgUFNQIGNyeXB0b2dyYXBoeS1vZmZsb2FkIGFjY2VsZXJhdGlvblwmIzM0O1xuIDIxMjpcdFx0ZGVwZW5kcyBvbiBJTkVUX1BTUFxuIDIxMzpcdFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU5cbiAyMTQ6XHRcdGRlZmF1bHQgeVxuIDIxNTpcdFx0aGVscFxuIDIxNjpcdFx0ICBtbHg1IGRldmljZSBvZmZsb2FkIHN1cHBvcnQgZm9yIEdvb2dsZSBQU1AgU2VjdXJpdHkgUHJvdG9jb2wgb2ZmbG9hZC5cbiAyMTc6XHRcdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxuIDIxODpcdFx0ICBpbnRlcmZhY2VzIHRvIFBTUCBTdGFjayB3aGljaCBzdXBwb3J0cyBQU1AgY3J5cHRvIG9mZmxvYWQuXG4gMjE5Olx0XG4gMjIwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4ODEKCQkJCQkJCW91dHB1dDogMTk5CgkJCQkJCQl0aG91Z2h0czogNDA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIERQTEwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgTUxYNV9EUExMYCBpcyBhbHNvIGluIHRoZSBtaXguIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBEUExMIGZ1bmN0aW9uYWxpdHkgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFkZCBgRFBMTGAgdG8gRW5hYmxlQ29uZmlncywgYW5kIHByb2JhYmx5IGFsc28gYE1MWDVfRFBMTGAgYW5kIGBQVFBfMTU4OF9DTE9DS19PQ1BgIGp1c3QgdG8gYmUgc2FmZSBhbmQgZW5zdXJlIHRoZSByZWxldmFudCBwYXJ0cyBhcmUgc2VsZWN0ZWQuCgpMZXQgbWUgdmVyaWZ5IHRoZSBsb2dpYyBoZXJlLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IHRoZSBEUExMIG5ldGxpbmsgaGFuZGxlcnMgd29yaywgdXNpbmcgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAgdG8gZmluZCB0aGUgb3duaW5nIERQTEwgcmVmZXJlbmNlIGZvciBhIHBpbi4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGNoZWNrcyB0byBwcmV2ZW50IGNyYXNoZXMgb3IgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWNyb3NzIGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9mIHRoZSBEUExMIHN1YnN5c3RlbSwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXItc3BhY2UuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSYjMzk7bSBzZWVpbmc6IGBkcGxsX2NtZF9waW5fZ2V0X29uZWAsIGBkcGxsX3Bpbl9mcmVxX3NldGAsIGBkcGxsX3Bpbl9lc3luY19zZXRgLCBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YCwgYW5kIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YC4gVGhlc2UgYXJlIGFsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgb3IgdXRpbGl0eSBmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhvc2UgaGFuZGxlcnMuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhlc2UgYXJlbiYjMzk7dCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHBlcmZvcm1hbmNlIGltcGFjdCBpcyBsaWtlbHkgbWluaW1hbCwgYnV0IGl0JiMzOTtzIGFsd2F5cyB3b3J0aCBrZWVwaW5nIGluIG1pbmQuCgpJJiMzOTttIHdvbmRlcmluZyBpZiBzcGVjaWZ5aW5nIGp1c3QgYERQTExgIHdpbGwgd29yayBhcyBpcy4gU3l6a2FsbGVyJiMzOTtzIGNvbmZpZyBzeXN0ZW0gbWlnaHQganVzdCBlbmFibGUgaXQsIGJ1dCBzaW5jZSBpdCYjMzk7cyBhIHNpbXBsZSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQsIGl0JiMzOTtzIHNhZmVyIHRvIHNwZWNpZnkgYSBkZXBlbmRlbmN5IGxpa2UgYE1MWDVfRFBMTGAgb3IgYFBUUF8xNTg4X0NMT0NLX09DUGAsIG9yIGBJQ0VgLiBJJiMzOTtsbCBqdXN0IGJlIGV4cGxpY2l0IGFuZCBhZGQgYWxsIG9mIHRob3NlIHRvIG15IGNvbmZpZ3VyYXRpb246IGBEUExMYCwgYE1MWDVfRFBMTGAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT0NQYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIG9uIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgIHNpbmNlIGl0JiMzOTtzIGEgbmV3IGZ1bmN0aW9uLiBJJiMzOTtsbCBhZGQgdGhhdCB0byBGb2N1c1N5bWJvbHMsIHRvby4KCkFscmlnaHQsIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUExMJiMzNDssCiAgICAmIzM0O01MWDVfRFBMTCYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19PQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QmIzM0OywKICAgICYjMzQ7ZHBsbF9jbWRfcGluX2dldF9vbmUmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZnJlcV9zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZXN5bmNfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9waGFzZV9hZGpfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUExMIHN1YnN5c3RlbSYjMzk7cyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQTEwmIzM0OywKICAgICYjMzQ7TUxYNV9EUExMJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX09DUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCYjMzQ7LAogICAgJiMzNDtkcGxsX2NtZF9waW5fZ2V0X29uZSYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9mcmVxX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9lc3luY19zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3BoYXNlX2Fkal9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgb3duZXIgRFBMTCByZWZlcmVuY2Ugb2YgYSBwaW4gYW5kIGFkZHMgY2hlY2tzIHRvIHByZXZlbnQgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHJlZmVyZW5jZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKG5ldGxpbmsgaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjA4LjA0NTk1NjI2MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDEwMzcyNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQTExcIixcbiAgICBcIk1MWDVfRFBMTFwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfT0NQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0XCIsXG4gICAgXCJkcGxsX2NtZF9waW5fZ2V0X29uZVwiLFxuICAgIFwiZHBsbF9waW5fZnJlcV9zZXRcIixcbiAgICBcImRwbGxfcGluX2VzeW5jX3NldFwiLFxuICAgIFwiZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9waGFzZV9hZGpfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJ3MgbmV0bGluayBpbnRlcmZhY2UgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBvd25lciBEUExMIHJlZmVyZW5jZSBvZiBhIHBpbiBhbmQgYWRkcyBjaGVja3MgdG8gcHJldmVudCBmYWlsdXJlcyB3aGVuIGNlcnRhaW4gb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSBhbGwgcmVmZXJlbmNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAobmV0bGluayBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzowOC4wNDU5NjQ2NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTQzNTgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMjA6NDM6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jIGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXFxuaW5kZXggYmIxZTg2NTBjOWQ1OTAuLjI0NWY2MjVmNGIzYjQ3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xcbkBAIC0xMTQ2LDYgKzExNDYsMzMgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsXFxuIFxcdHJldHVybiByZWctXFx1MDAzZXByaXY7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QgLSBmaW5kIHRoZSBmaXJzdCBvd25lciBkcGxsIHJlZiBvZiBhIHBpblxcbisgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cXG4rICpcXG4rICogU2VhcmNoIHBpbidzIGRwbGxfcmVmcyBmb3IgYSByZWYgd2hvc2UgZHBsbCBtYXRjaGVzIHRoZSBwaW4nc1xcbisgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyXFxuKyAqIHRoYXQgY3JlYXRlZCB0aGUgcGluLiBUaGlzIGVuc3VyZXMgcGluLWxldmVsIGF0dHJpYnV0ZXMgYXJlXFxuKyAqIHJlcG9ydGVkIGFuZCBtb2RpZmllZCB1c2luZyB0aGUgb3duZXIncyBvcHMgZXZlbiB3aGVuIHRoZSBwaW4gaXNcXG4rICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxcbisgKlxcbisgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG93bmVyJ3MgZHBsbF9waW5fcmVmLCBvciBOVUxMIGlmIG5vXFxuKyAqIG93bmVyIHJlZiBpcyBmb3VuZC5cXG4rICovXFxuK3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbilcXG4re1xcbitcXHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XFxuK1xcdHVuc2lnbmVkIGxvbmcgaTtcXG4rXFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuK1xcdFxcdGlmIChyZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKVxcbitcXHRcXHRcXHRyZXR1cm4gcmVmO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IGRwbGxfcGluX29wcyAqZHBsbF9waW5fb3BzKHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZilcXG4ge1xcbiBcXHRzdHJ1Y3QgZHBsbF9waW5fcmVnaXN0cmF0aW9uICpyZWc7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaCBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxcbmluZGV4IGUyNDU3NzExMzQzMTczLi5kYThhMzY5NTU2ZWQxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcXG5AQCAtOTMsNiArOTMsNyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCwgc3RydWN0IGRwbGxfcGluICpwaW4pO1xcbiBcXG4gY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlX29wcyAqZHBsbF9kZXZpY2Vfb3BzKHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCk7XFxuIHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbF9kZXZpY2VfZ2V0X2J5X2lkKGludCBpZCk7XFxuK3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbik7XFxuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xcbiBzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KHN0cnVjdCB4YXJyYXkgKnhhX3JlZnMpO1xcbiBleHRlcm4gc3RydWN0IHhhcnJheSBkcGxsX2RldmljZV94YTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXFxuaW5kZXggYmY3MjljZGU3OTZhNzcuLmIzZjBjYjdkM2QzNDlhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xcbkBAIC02OTYsNyArNjk2LDkgQEAgZHBsbF9jbWRfcGluX2dldF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRwbGxfcGluICpwaW4sXFxuIFxcdHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzKTtcXG4rXFx0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XFxuK1xcdGlmICghcmVmKVxcbitcXHRcXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuIFxcdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xcbiBcXG4gXFx0cmV0ID0gZHBsbF9tc2dfYWRkX3Bpbl9oYW5kbGUobXNnLCBwaW4pO1xcbkBAIC0xMDg3LDEyICsxMDg5LDE5IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxcbiBcXG4gXFx0eGFfZm9yX2VhY2goXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcXG4gXFx0XFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuLVxcdFxcdGlmICghb3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9nZXQpIHtcXG4tXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiZnJlcXVlbmN5IHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcXFwiKTtcXG4rXFx0XFx0aWYgKCghb3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9nZXQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdHJldCA9IG9wcy1cXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxcbkBAIC0xMTA2LDYgKzExMTUsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFxuIFxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZnJlcXVlbmN5X3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdHJldCA9IG9wcy1cXHUwMDNlZnJlcXVlbmN5X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHRcXHQgZHBsbCwgZHBsbF9wcml2KGRwbGwpLCBmcmVxLCBleHRhY2spO1xcbkBAIC0xMTI1LDYgKzExMzYsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFx0XFx0aWYgKHJlZiA9PSBmYWlsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRpZiAob3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxcbkBAIC0xMTQ4LDEzICsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFxuIFxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbi1cXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXFx1MDAzZWVzeW5jX2dldCkge1xcbitcXHRcXHRpZiAoKCFvcHMtXFx1MDAzZWVzeW5jX3NldCB8fCAhb3BzLVxcdTAwM2Vlc3luY19nZXQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKSB7XFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJlbWJlZGRlZCBzeW5jIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGRldmljZVxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdHJldCA9IG9wcy1cXHUwMDNlZXN5bmNfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsXFxuQEAgLTExNzgsNiArMTE5Nyw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFx0XFx0dm9pZCAqcGluX2RwbGxfcHJpdjtcXG4gXFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZHBsbCA9IHJlZi1cXHUwMDNlZHBsbDtcXG4gXFx0XFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcXG5AQCAtMTIwMSw2ICsxMjIyLDggQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxcbiBcXHRcXHRpZiAocmVmID09IGZhaWxlZClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZHBsbCA9IHJlZi1cXHUwMDNlZHBsbDtcXG4gXFx0XFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xcbiBcXHRcXHRpZiAob3BzLVxcdTAwM2Vlc3luY19zZXQocGluLCBwaW5fZHBsbF9wcml2LCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksXFxuQEAgLTEyMzUsOCArMTI1OCwxMSBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcInJlZmVyZW5jZSBzeW5jIHBpbiBub3QgYXZhaWxhYmxlXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuLVxcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzKTtcXG4tXFx0QVNTRVJUX05PVF9OVUxMKHJlZik7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGlmICghb3BzLVxcdTAwM2VyZWZfc3luY19zZXQgfHwgIW9wcy1cXHUwMDNlcmVmX3N5bmNfZ2V0KSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcInJlZmVyZW5jZSBzeW5jIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwaW5cXFwiKTtcXG5AQCAtMTI1NSw2ICsxMjgxLDggQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0eGFfZm9yX2VhY2goXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcXG4gXFx0XFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuK1xcdFxcdGlmICghb3BzLVxcdTAwM2VyZWZfc3luY19zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHRcXHRyZWZfc3luY19waW4sXFxuQEAgLTEyNzcsNiArMTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcXG4gXFx0XFx0aWYgKHJlZiA9PSBmYWlsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXJlZl9zeW5jX3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdGlmIChvcHMtXFx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHQgICAgICByZWZfc3luY19waW4sXFxuQEAgLTE0NjgsMTIgKzE0OTgsMTggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXFxuIFxcbiBcXHR4YV9mb3JfZWFjaChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4tXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkge1xcbitcXHRcXHRpZiAoKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHJlZi1cXHUwMDNlZHBsbC1cXHUwMDNlbW9kdWxlID09IHBpbi1cXHUwMDNlbW9kdWxlIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZWNsb2NrX2lkID09IHBpbi1cXHUwMDNlY2xvY2tfaWQpIHtcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwicGhhc2UgYWRqdXN0IG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMpO1xcbitcXHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcXG4rXFx0aWYgKCFyZWYpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwicGluIG93bmVyIGRwbGwgbm90IGZvdW5kXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuIFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbiBcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRyZXQgPSBvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcXG5AQCAtMTQ4OCw2ICsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXFxuIFxcbiBcXHR4YV9mb3JfZWFjaChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXFxuQEAgLTE1MTAsNiArMTU0OCw4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLFxcbiBcXHRcXHRpZiAocmVmID09IGZhaWxlZClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdGlmIChvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9waGFzZV9hZGosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjA4Ljc5NjgxMzkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNTk1MDA0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDQxOGRlOTQyODU4ZWMwNTg0NDNiZjdkZWU5ZWUyOTBiODk4OTU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIwOjQzOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jIGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXG5pbmRleCBiYjFlODY1MGM5ZDU5MC4uMjQ1ZjYyNWY0YjNiNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmNcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xuQEAgLTExNDYsNiArMTE0NiwzMyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCxcbiBcdHJldHVybiByZWctXHUwMDNlcHJpdjtcbiB9XG4gXG4rLyoqXG4rICogZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0IC0gZmluZCB0aGUgZmlyc3Qgb3duZXIgZHBsbCByZWYgb2YgYSBwaW5cbisgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cbisgKlxuKyAqIFNlYXJjaCBwaW4ncyBkcGxsX3JlZnMgZm9yIGEgcmVmIHdob3NlIGRwbGwgbWF0Y2hlcyB0aGUgcGluJ3NcbisgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyXG4rICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmVcbisgKiByZXBvcnRlZCBhbmQgbW9kaWZpZWQgdXNpbmcgdGhlIG93bmVyJ3Mgb3BzIGV2ZW4gd2hlbiB0aGUgcGluIGlzXG4rICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxuKyAqXG4rICogUmV0dXJuOiBwb2ludGVyIHRvIHRoZSBvd25lcidzIGRwbGxfcGluX3JlZiwgb3IgTlVMTCBpZiBub1xuKyAqIG93bmVyIHJlZiBpcyBmb3VuZC5cbisgKi9cbitzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pXG4re1xuK1x0c3RydWN0IGRwbGxfcGluX3JlZiAqcmVmO1xuK1x0dW5zaWduZWQgbG9uZyBpO1xuK1xuK1x0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4rXHRcdGlmIChyZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZWNsb2NrX2lkID09IHBpbi1cdTAwM2VjbG9ja19pZClcbitcdFx0XHRyZXR1cm4gcmVmO1xuK1x0fVxuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IGRwbGxfcGluX3JlZ2lzdHJhdGlvbiAqcmVnO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaCBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxuaW5kZXggZTI0NTc3MTEzNDMxNzMuLmRhOGEzNjk1NTZlZDExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oXG4rKysgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcbkBAIC05Myw2ICs5Myw3IEBAIHZvaWQgKmRwbGxfcGluX29uX3Bpbl9wcml2KHN0cnVjdCBkcGxsX3BpbiAqcGFyZW50LCBzdHJ1Y3QgZHBsbF9waW4gKnBpbik7XG4gXG4gY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlX29wcyAqZHBsbF9kZXZpY2Vfb3BzKHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCk7XG4gc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsX2RldmljZV9nZXRfYnlfaWQoaW50IGlkKTtcbitzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pO1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xuIHN0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfeGFfcmVmX2RwbGxfZmlyc3Qoc3RydWN0IHhhcnJheSAqeGFfcmVmcyk7XG4gZXh0ZXJuIHN0cnVjdCB4YXJyYXkgZHBsbF9kZXZpY2VfeGE7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXG5pbmRleCBiZjcyOWNkZTc5NmE3Ny4uYjNmMGNiN2QzZDM0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9uZXRsaW5rLmNcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xuQEAgLTY5Niw3ICs2OTYsOSBAQCBkcGxsX2NtZF9waW5fZ2V0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjtcbiBcdGludCByZXQ7XG4gXG4tXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMpO1xuK1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4rXHRpZiAoIXJlZilcbitcdFx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiBcdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xuIFxuIFx0cmV0ID0gZHBsbF9tc2dfYWRkX3Bpbl9oYW5kbGUobXNnLCBwaW4pO1xuQEAgLTEwODcsMTIgKzEwODksMTkgQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4tXHRcdGlmICghb3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQgfHwgIW9wcy1cdTAwM2VmcmVxdWVuY3lfZ2V0KSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcImZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXCIpO1xuK1x0XHRpZiAoKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldCB8fCAhb3BzLVx1MDAzZWZyZXF1ZW5jeV9nZXQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlbW9kdWxlID09IHBpbi1cdTAwM2Vtb2R1bGUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4rXHRcdFx0XHQgICAgICAgXCJmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVwiKTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4rXHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbitcdGlmICghcmVmKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcIik7XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxuQEAgLTExMDYsNiArMTExNSw4IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7XG5AQCAtMTEyNSw2ICsxMTM2LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxuQEAgLTExNDgsMTMgKzExNjEsMTkgQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuLVx0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQgfHwgIW9wcy1cdTAwM2Vlc3luY19nZXQpIHtcbitcdFx0aWYgKCghb3BzLVx1MDAzZWVzeW5jX3NldCB8fCAhb3BzLVx1MDAzZWVzeW5jX2dldCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZWNsb2NrX2lkID09IHBpbi1cdTAwM2VjbG9ja19pZCkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImVtYmVkZGVkIHN5bmMgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlXCIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbitcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xuK1x0aWYgKCFyZWYpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBpbiBvd25lciBkcGxsIG5vdCBmb3VuZFwiKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4gXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiBcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdHJldCA9IG9wcy1cdTAwM2Vlc3luY19nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwgZHBsbCxcbkBAIC0xMTc4LDYgKzExOTcsOCBAQCBkcGxsX3Bpbl9lc3luY19zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXHRcdHZvaWQgKnBpbl9kcGxsX3ByaXY7XG4gXG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlZXN5bmNfc2V0KHBpbiwgcGluX2RwbGxfcHJpdiwgZHBsbCwgZHBsbF9wcml2KGRwbGwpLFxuQEAgLTEyMDEsNiArMTIyMiw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcdFx0aWYgKHJlZiA9PSBmYWlsZWQpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xuIFx0XHRpZiAob3BzLVx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcbkBAIC0xMjM1LDggKzEyNTgsMTEgQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwicmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGVcIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbi1cdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xuK1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4rXHRpZiAoIXJlZikge1xuK1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwicGluIG93bmVyIGRwbGwgbm90IGZvdW5kXCIpO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbiBcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuIFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0IHx8ICFvcHMtXHUwMDNlcmVmX3N5bmNfZ2V0KSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluXCIpO1xuQEAgLTEyNTUsNiArMTI4MSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdFx0cmV0dXJuIDA7XG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4rXHRcdGlmICghb3BzLVx1MDAzZXJlZl9zeW5jX3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdHJlZl9zeW5jX3BpbixcbkBAIC0xMjc3LDYgKzEzMDUsOCBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdGlmIChvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHQgICAgICByZWZfc3luY19waW4sXG5AQCAtMTQ2OCwxMiArMTQ5OCwxOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0cixcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldCB8fCAhb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9nZXQpIHtcbitcdFx0aWYgKCghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZW1vZHVsZSA9PSBwaW4tXHUwMDNlbW9kdWxlIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlY2xvY2tfaWQgPT0gcGluLVx1MDAzZWNsb2NrX2lkKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBoYXNlIGFkanVzdCBub3Qgc3VwcG9ydGVkXCIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbitcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xuK1x0aWYgKCFyZWYpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBpbiBvd25lciBkcGxsIG5vdCBmb3VuZFwiKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4gXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiBcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdHJldCA9IG9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG5AQCAtMTQ4OCw2ICsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4rXHRcdGlmICghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLFxuIFx0XHRcdFx0XHQgICAgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG5AQCAtMTUxMCw2ICsxNTQ4LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdFx0ICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9waGFzZV9hZGosXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzowOC43OTY4MTc0OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTMzNDUzNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRQTEwgU3Vic3lzdGVtIFBhdGNoIEFuYWx5c2lzIFx1MDAyNiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRvdWNoaW5nIHRoZSBEUExMIGNvcmUg4oCTIHNwZWNpZmljYWxseSBgZHBsbF9jb3JlLmNgLCBgZHBsbF9jb3JlLmhgLCBhbmQgYGRwbGxfbmV0bGluay5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3QgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIG5ldyBmdW5jdGlvbiwgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHVycG9zZSBpcyB0byBwcm92aWRlIGEgbW9yZSBzcGVjaWZpYyB3YXkgdG8gZmluZCB0aGUgaW5pdGlhbCBEUExMIHJlZmVyZW5jZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHBpbi5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGNhbGxzIHRvIGBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0YCB3aXRoIHRoaXMgbmV3IGZ1bmN0aW9uIHdpdGhpbiBhIGJ1bmNoIG9mIGNyaXRpY2FsIERQTEwgb3BlcmF0aW9uczogYGRwbGxfY21kX3Bpbl9nZXRfb25lYCwgYGRwbGxfcGluX2ZyZXFfc2V0YCwgYGRwbGxfcGluX2VzeW5jX3NldGAsIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgLCBhbmQgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgZWl0aGVyIGNsYXJpdHkgb3IgY29ycmVjdG5lc3Mgd2l0aGluIHRoZSBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcgdXNlZCBmb3IgdGhlIERQTEwgc3Vic3lzdGVtLiBBZGRpdGlvbmFsbHksIEkgc2VlIHRoZXkncmUgYWRkaW5nIGluIGNoZWNrcyB0byBzZWUgaWYgYG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0YCBldGMgYXJlIHZhbGlkIHRvIHByZXZlbnQgY3Jhc2hlcyDigJMgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGJ1dCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gZnV6emluZy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBEUExMIHN5c3RlbSwgd2hpY2ggd2Uga25vdyBpcyBleHBvc2VkIHZpYSBuZXRsaW5rLiBHaXZlbiB0aGlzIHRvdWNoIG9uIGNvcmUgZnVuY3Rpb25hbGl0eSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKmZ1enppbmcqLiBXZSBuZWVkIHRvIHRob3JvdWdobHkgdGVzdCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgbmV0bGluay1hY2Nlc3NpYmxlLiBBbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGNvdWxkIGJlIGV4cGxvaXRlZCByZW1vdGVseS5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBEUExMLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IGBDT05GSUdfRFBMTGAgc2V0dGluZ3MuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBEUExMIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCwgdGhlcmVmb3JlLCBob3cgaXQgY2FuIGJlIHRhcmdldGVkIGJ5IGZ1enppbmcuIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCBhbmQgd2hpY2ggb25lcyBhcmUgZGlzYWJsZWQsIHNvIEkgY2FuIGVuc3VyZSBhIGZ1bGwgY292ZXJhZ2Ugb2YgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6NDM6MTQuMzMwMjczODc5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDk0NDgxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERQTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC9LY29uZmlnPTY9bWVudSBcXFwiRFBMTCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy03LVxcbmRyaXZlcnMvZHBsbC9LY29uZmlnOjg6Y29uZmlnIERQTExcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy05LVxcdGJvb2xcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL2RwbGwvS2NvbmZpZzoxMTpjb25maWcgRFBMTF9SRUZDTlRfVFJBQ0tFUlxcbmRyaXZlcnMvZHBsbC9LY29uZmlnLTEyLVxcdGJvb2wgXFxcIkRQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzoxOS42Mzk3Mjc0ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTcwNDU1ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfRFBMTGAgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBgQ09ORklHX0RQTExgIGlzIGEgYm9vbGVhbiwgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aG8ncyAqdXNpbmcqIHRoaXM/IEl04oCZcyB1c3VhbGx5IHNlbGVjdGVkIGJ5IGRyaXZlcnMuIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBDT05GSUdfRFBMTGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgaGVyZSB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGhlbHBzIG1lIG5hcnJvdyBkb3duIHdoZXJlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBwcm9ibGVtcyBvciBvcHRpbWl6YXRpb25zLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgaXQsIG9mIGNvdXJzZS4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjIyLjYxMDE4NTU3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDc5MzE0NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBEUExMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNS1cXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NjpcXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA1LVxcdHNlbGVjdCBQTERNRldcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjMwNjpcXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIwMz1jb25maWcgTUxYNV9EUExMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDUtXFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFxcdTAwMjZcXHUwMDI2IEVUSEVSTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyMDY6XFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTktXFx0c2VsZWN0IENSQzE2XFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMjA6XFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjI2LjY4OTUwNjI0OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODg5NTg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFBMTCBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBEUExMIHN1YnN5c3RlbSBpcyBiZWluZyBicm91Z2h0IGluIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBgSUNFYCwgYE1MWDVfRFBMTGAsIGBQVFBfMTU4OF9DTE9DS19PQ1BgLCBhbmQgYFpMMzA3M1hgLiBNYWtlcyBzZW5zZSwgaXQncyBhIGZ1bmRhbWVudGFsIGNsb2NraW5nIGVsZW1lbnQuIFRoZSBjb2RlJ3MgbWFraW5nIGl0IGNsZWFyIHRoYXQgYERQTExgIGlzIGEgY29yZSBzdWJzeXN0ZW0gYW5kLCBzaW5jZSBpdCdzIGRlZmluZWQgYXMgYSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQsIHRoZSBvbmx5IHdheSBpdCBnZXRzIGVuYWJsZWQgaXMgdGhyb3VnaCBhIHNlbGVjdGlvbi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgdGhlb3JldGljYWxseS4gSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9kcGxsL0tjb25maWdgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBiZXR0ZXIuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBzZWxlY3Rpb24gd29ya3MsIGFyZSB0aGVyZSBmdXJ0aGVyIGRlcGVuZGVuY2llcz8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIHNjaGVtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjMwLjE3ODQ2ODE2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZHBsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEdlbmVyaWMgRFBMTCBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiRFBMTCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0Y29uZmlnIERQTExcXG4gICA5OlxcdFxcdGJvb2xcXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIERQTExfUkVGQ05UX1RSQUNLRVJcXG4gIDEyOlxcdFxcdGJvb2wgXFxcIkRQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXFxcIlxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXFx1MDAyNlxcdTAwMjYgU1RBQ0tUUkFDRV9TVVBQT1JUIFxcdTAwMjZcXHUwMDI2IERQTExcXG4gIDE0OlxcdFxcdHNlbGVjdCBSRUZfVFJBQ0tFUlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBFbmFibGUgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nIGZvciBEUExMIGRldmljZXMgYW5kIHBpbnMuXFxuICAxNzpcXHRcXHQgIFRoaXMgaGVscHMgZGVidWdnaW5nIHJlZmVyZW5jZSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVnc1xcbiAgMTg6XFx0XFx0ICBieSByZWNvcmRpbmcgc3RhY2sgdHJhY2VzIGZvciBlYWNoIGdldC9wdXQgb3BlcmF0aW9uLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIFRoZSB0cmFja2luZyBpbmZvcm1hdGlvbiBpcyBleHBvc2VkIHZpYSBkZWJ1Z2ZzIGF0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzozMC4xNzg1NjkzNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTc0OTY5NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRQTEwgQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGNvbmZpZ3VyZSBEUExMIGZvciBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgYm9vbGVhbiBvcHRpb24gYW5kIGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQsIEkgY2FuJ3QganVzdCBlbmFibGUgaXQgdGhyb3VnaCBgbWFrZSBkZWZjb25maWdgIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVpdGhlciBsaXN0IGBEUExMYCBpbiB0aGUgY29uZmlnIGFuZCBob3BlIFN5emthbGxlcidzIHN5c3RlbSBmaWd1cmVzIGl0IG91dCwgb3IgdG8gZXhwbGljaXRseSBsaXN0IGEgZHJpdmVyIHRoYXQgc2VsZWN0cyBpdC4gSXQncyB1c3VhbGx5IHNhZmVyIHRvIGJlIGV4cGxpY2l0LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBhcHByb2FjaC4gQmVjYXVzZSBpdCdzIGEgYm9vbCwgaXQncyBwb3NzaWJsZSBTeXprYWxsZXIncyBjb25maWcgc3lzdGVtIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIGl0IGlmIGl0J3Mgc2VsZWN0ZWQgYnkgc29tZXRoaW5nIGVsc2UuIEJ1dCBJIHN0aWxsIHdhbnQgdG8gYmUgcHJlY2lzZS4gSSdtIGdvaW5nIHRvIGxpc3QgYSBkcml2ZXIga25vd24gdG8gc2VsZWN0IGl0LCBsaWtlIGBaTDMwNzNYYCBvciBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCwgb3IgYERQTExgIGRpcmVjdGx5IGFzIGl0J3MgdGhlIGNvcmUgc3Vic3lzdGVtLlxuXG5UbyBoZWxwIHdpdGggdGhpcywgSSdtIGNoZWNraW5nIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgcmVsYXRlZCB0byBEUExMLCB0byBzZWUgd2hhdCB0aGV5IGZvY3VzIG9uOlxuKiAgIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgXG4qICAgYGRwbGxfY21kX3Bpbl9nZXRfb25lYFxuKiAgIGBkcGxsX3Bpbl9mcmVxX3NldGBcbiogICBgZHBsbF9waW5fZXN5bmNfc2V0YFxuKiAgIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgXG4qICAgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgXG5cblRoZXNlIHNlZW0gdG8gYmUgcmVsYXRlZCB0byBuZXRsaW5rIGhhbmRsZXJzIG9yIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2Ygd2hhdCdzIGJlZW4gcmVjZW50bHkgYWN0aXZlLiBJJ2xsIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgd2hlbiB0ZXN0aW5nOlxuKiAgIGBkcGxsX2NtZF9waW5fZ2V0X29uZWBcbiogICBgZHBsbF9waW5fZnJlcV9zZXRgXG4qICAgYGRwbGxfcGluX2VzeW5jX3NldGBcbiogICBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YFxuKiAgIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YFxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBEUExMYCAqY2FuKiBiZSBkaXJlY3RseSBlbmFibGVkLiBBbHRob3VnaCBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyBib29sZWFuIG9wdGlvbnMgd2l0aG91dCBkaXJlY3QgcHJvbXB0cywgZXhwbGljaXRseSBzZWxlY3RpbmcgYSBkcml2ZXIgaXMgY2xlYW5lciBhbmQgbW9yZSByZWxpYWJsZS4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBaTDMwNzNYYCwgaW4gYGRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWdgLiBJJ2xsIGNvbmZpcm0gdGhhdCdzIGEgdmFsaWQgd2F5IHRvIGVuYWJsZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjM3LjE1MzU0MTU5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRjb25maWcgWkwzMDczWFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBBenVyaXRlIERQTEwvUFRQL1N5bmNFIGRldmljZXNcXFwiIGlmIENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdHNlbGVjdCBEUExMXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIEF6dXJpdGUgZmFtaWx5IERQTEwvUFRQL1N5bmNFXFxuICAxMTpcXHRcXHQgIGRldmljZXMgdGhhdCBzdXBwb3J0IHVwIHRvIDUgaW5kZXBlbmRlbnQgRFBMTCBjaGFubmVscyxcXG4gIDEyOlxcdFxcdCAgMTAgaW5wdXQgcGlucyBhbmQgdXAgdG8gMjAgb3V0cHV0IHBpbnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMTU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB6bDMwNzN4LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgWkwzMDczWF9JMkNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNaWNyb2NoaXAgQXp1cml0ZSBkZXZpY2VzXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX0kyQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzozNy4xNTM4MTk3OTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1NjY3Nzg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipBbmFseXppbmcgdGhlIFpMMzA3M1ggRGVjbGFyYXRpb24qKlxuXG5Pa2F5LCBzbyBgWkwzMDczWGAgaXMgZGVmaW5lZCBhcyBhIHRyaXN0YXRlIGZvciB0aGUgXCJNaWNyb2NoaXAgQXp1cml0ZSBEUExML1BUUC9TeW5jRSBkZXZpY2VzLlwiIFRoYXQncyBnb29kIHRvIGtub3csIHNwZWNpZmljLCBhbmQgcmVsZXZhbnQsIEknbSBhbHJlYWR5IGF3YXJlIG9mIHRoaXMgdGVjaG5vbG9neS4gQnV0LCBhbmQgaGVyZSdzIHRoZSBraWNrZXIsICppdCdzIG9ubHkgYWN0dWFsbHkgdmlzaWJsZSBpZiogYENPTVBJTEVfVEVTVGAgKmlzIGRlZmluZWQqLiBSaWdodCwgZ290IGl0LiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBzcGVjaWZpYyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIG5vIHN1cnByaXNlcyB0aGVyZS4gTGV0J3Mgc2VlLi4uIHdoYXQgYWJvdXQgYFBUUF8xNTg4X0NMT0NLX09DUGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYFpMMzA3M1hgIGFuZCB3aGV0aGVyIHRoaXMgYENPTVBJTEVfVEVTVGAgZGVwZW5kZW5jeSBhbHNvIGFwcGxpZXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhcm91bmQgdGhlc2UgZGVmaW5pdGlvbnMuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjQwLjkxMDUwMDc3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbiAyMTE6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG4gMjEyOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gMjEzOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAyMTQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTVREXFxuIDIxNTpcXHRcXHRkZXBlbmRzIG9uIFNFUklBTF84MjUwXFxuIDIxNjpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuIDIxNzpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gMjE4OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAyMTk6XFx0XFx0c2VsZWN0IENSQzE2XFxuIDIyMDpcXHRcXHRzZWxlY3QgRFBMTFxcbiAyMjE6XFx0XFx0aGVscFxcbiAyMjI6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIGFuIE9wZW5Db21wdXRlIHRpbWUgY2FyZC5cXG4gMjIzOlxcdFxcbiAyMjQ6XFx0XFx0ICBUaGUgT3BlbkNvbXB1dGUgdGltZSBjYXJkIGlzIGFuIGF0b21pYyBjbG9jayBhbG9uZyB3aXRoXFxuIDIyNTpcXHRcXHQgIGEgR1BTIHJlY2VpdmVyIHRoYXQgcHJvdmlkZXMgYSBHcmFuZG1hc3RlciBjbG9jayBzb3VyY2VcXG4gMjI2OlxcdFxcdCAgZm9yIGEgUFRQIGVuYWJsZWQgbmV0d29yay5cXG4gMjI3OlxcdFxcbiAyMjg6XFx0XFx0ICBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnRpbWluZ2NhcmQuY29tL1xcbiAyMjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjQwLjkxMDY1NzY3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5MDE5NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDbG9jayBhbmQgUExMIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gSSdtIHNlZWluZyBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCBvdXQgdGhlcmUuIFRoYXQncyBnb29kLCBhIGtub3duIGZhY3Rvci4gTm93IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sIFwiT2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGBNTFg1X0RQTExgPyBXaGVyZSBpcyB0aGF0IGluIHRoZSBwaWN0dXJlP1wiIFdlJ3JlIGRlYWxpbmcgd2l0aCBjbG9ja2luZyBhbmQgUExMcywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gY29tcG9uZW50cywgYW5kIHRoZWlyIG92ZXJhbGwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbm5lY3Rpb24gdG8gbWFrZSB0byBlbnN1cmUgdGltaW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXJlIHdvcmtpbmcgY29ycmVjdGx5LCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGl0J3Mgc3RhdHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzY5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0Mzo0NC4wODk2ODA0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAzLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAzOlxcdGNvbmZpZyBNTFg1X0RQTExcXG4gMjA0OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIERQTEwgc3VwcG9ydFxcXCJcXG4gMjA1OlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuIDIwNjpcXHRcXHRzZWxlY3QgRFBMTFxcbiAyMDc6XFx0XFx0aGVscFxcbiAyMDg6XFx0XFx0ICBEUExMIHN1cHBvcnQgaW4gTWVsbGFub3ggVGVjaG5vbG9naWVzIENvbm5lY3RYIE5JQ3MuXFxuIDIwOTpcXHRcXG4gMjEwOlxcdGNvbmZpZyBNTFg1X0VOX1BTUFxcbiAyMTE6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIHN1cHBvcnQgZm9yIFBTUCBjcnlwdG9ncmFwaHktb2ZmbG9hZCBhY2NlbGVyYXRpb25cXFwiXFxuIDIxMjpcXHRcXHRkZXBlbmRzIG9uIElORVRfUFNQXFxuIDIxMzpcXHRcXHRkZXBlbmRzIG9uIE1MWDVfQ09SRV9FTlxcbiAyMTQ6XFx0XFx0ZGVmYXVsdCB5XFxuIDIxNTpcXHRcXHRoZWxwXFxuIDIxNjpcXHRcXHQgIG1seDUgZGV2aWNlIG9mZmxvYWQgc3VwcG9ydCBmb3IgR29vZ2xlIFBTUCBTZWN1cml0eSBQcm90b2NvbCBvZmZsb2FkLlxcbiAyMTc6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIFBTUCBlbmNyeXB0aW9uIG9mZmxvYWQgYW5kIGZvciBTUEkgYW5kIGtleSBnZW5lcmF0aW9uXFxuIDIxODpcXHRcXHQgIGludGVyZmFjZXMgdG8gUFNQIFN0YWNrIHdoaWNoIHN1cHBvcnRzIFBTUCBjcnlwdG8gb2ZmbG9hZC5cXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0Mzo0NC4wODk4MDc1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzIxMjk3OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIERQTEwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBNTFg1X0RQTExgIGlzIGFsc28gaW4gdGhlIG1peC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIERQTEwgZnVuY3Rpb25hbGl0eSBpcyBwcm9wZXJseSBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYWRkIGBEUExMYCB0byBFbmFibGVDb25maWdzLCBhbmQgcHJvYmFibHkgYWxzbyBgTUxYNV9EUExMYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09DUGAganVzdCB0byBiZSBzYWZlIGFuZCBlbnN1cmUgdGhlIHJlbGV2YW50IHBhcnRzIGFyZSBzZWxlY3RlZC5cblxuTGV0IG1lIHZlcmlmeSB0aGUgbG9naWMgaGVyZS4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgRFBMTCBuZXRsaW5rIGhhbmRsZXJzIHdvcmssIHVzaW5nIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgIHRvIGZpbmQgdGhlIG93bmluZyBEUExMIHJlZmVyZW5jZSBmb3IgYSBwaW4uIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGNoZWNrcyB0byBwcmV2ZW50IGNyYXNoZXMgb3IgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWNyb3NzIGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9mIHRoZSBEUExMIHN1YnN5c3RlbSwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXItc3BhY2UuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgaW52b2x2ZWQuIEknbSBzZWVpbmc6IGBkcGxsX2NtZF9waW5fZ2V0X29uZWAsIGBkcGxsX3Bpbl9mcmVxX3NldGAsIGBkcGxsX3Bpbl9lc3luY19zZXRgLCBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YCwgYW5kIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YC4gVGhlc2UgYXJlIGFsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgb3IgdXRpbGl0eSBmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhvc2UgaGFuZGxlcnMuIEknbSBwcmV0dHkgc3VyZSB0aGVzZSBhcmVuJ3QgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgbGlrZWx5IG1pbmltYWwsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBrZWVwaW5nIGluIG1pbmQuXG5cbkknbSB3b25kZXJpbmcgaWYgc3BlY2lmeWluZyBqdXN0IGBEUExMYCB3aWxsIHdvcmsgYXMgaXMuIFN5emthbGxlcidzIGNvbmZpZyBzeXN0ZW0gbWlnaHQganVzdCBlbmFibGUgaXQsIGJ1dCBzaW5jZSBpdCdzIGEgc2ltcGxlIGJvb2xlYW4gd2l0aG91dCBhIHByb21wdCwgaXQncyBzYWZlciB0byBzcGVjaWZ5IGEgZGVwZW5kZW5jeSBsaWtlIGBNTFg1X0RQTExgIG9yIGBQVFBfMTU4OF9DTE9DS19PQ1BgLCBvciBgSUNFYC4gSSdsbCBqdXN0IGJlIGV4cGxpY2l0IGFuZCBhZGQgYWxsIG9mIHRob3NlIHRvIG15IGNvbmZpZ3VyYXRpb246IGBEUExMYCwgYE1MWDVfRFBMTGAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT0NQYC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgb24gYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAgc2luY2UgaXQncyBhIG5ldyBmdW5jdGlvbi4gSSdsbCBhZGQgdGhhdCB0byBGb2N1c1N5bWJvbHMsIHRvby5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODgxLCJPdXRwdXRUb2tlbnMiOjE5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjUxLjgxMTEwOTcyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTE5NjcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7c2zt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 20:10:55 +0000 UTC FinishedAt: 2026-07-14 20:43:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DPLL", "MLX5_DPLL", "PTP_1588_CLOCK_OCP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DPLL", "MLX5_DPLL", "PTP_1588_CLOCK_OCP" ], "series_id": "5a458fdb-163d-4864-b06a-d8c0e76d6db9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dpll_pin_own_dpll_ref_first", "dpll_cmd_pin_get_one", "dpll_pin_freq_set", "dpll_pin_esync_set", "dpll_pin_ref_sync_state_set", "dpll_pin_phase_adj_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQTEwmIzM0OywKICAgICYjMzQ7TUxYNV9EUExMJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX09DUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCYjMzQ7LAogICAgJiMzNDtkcGxsX2NtZF9waW5fZ2V0X29uZSYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9mcmVxX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9lc3luY19zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3BoYXNlX2Fkal9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgb3duZXIgRFBMTCByZWZlcmVuY2Ugb2YgYSBwaW4gYW5kIGFkZHMgY2hlY2tzIHRvIHByZXZlbnQgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHJlZmVyZW5jZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKG5ldGxpbmsgaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDo0MzowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmNcbmluZGV4IGJiMWU4NjUwYzlkNTkwLi4yNDVmNjI1ZjRiM2I0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXG5AQCAtMTE0Niw2ICYjNDM7MTE0NiwzMyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCxcbiBcdHJldHVybiByZWctXHUwMDNlcHJpdjtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QgLSBmaW5kIHRoZSBmaXJzdCBvd25lciBkcGxsIHJlZiBvZiBhIHBpblxuJiM0MzsgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cbiYjNDM7ICpcbiYjNDM7ICogU2VhcmNoIHBpbiYjMzk7cyBkcGxsX3JlZnMgZm9yIGEgcmVmIHdob3NlIGRwbGwgbWF0Y2hlcyB0aGUgcGluJiMzOTtzXG4mIzQzOyAqIChtb2R1bGUsIGNsb2NrX2lkKSB0dXBsZSwgaS5lLiB0aGUgZHBsbCByZWdpc3RlcmVkIGJ5IHRoZSBkcml2ZXJcbiYjNDM7ICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmVcbiYjNDM7ICogcmVwb3J0ZWQgYW5kIG1vZGlmaWVkIHVzaW5nIHRoZSBvd25lciYjMzk7cyBvcHMgZXZlbiB3aGVuIHRoZSBwaW4gaXNcbiYjNDM7ICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG93bmVyJiMzOTtzIGRwbGxfcGluX3JlZiwgb3IgTlVMTCBpZiBub1xuJiM0MzsgKiBvd25lciByZWYgaXMgZm91bmQuXG4mIzQzOyAqL1xuJiM0MztzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBpO1xuJiM0MztcbiYjNDM7XHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiYjNDM7XHRcdGlmIChyZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpXG4mIzQzO1x0XHRcdHJldHVybiByZWY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzICpkcGxsX3Bpbl9vcHMoc3RydWN0IGRwbGxfcGluX3JlZiAqcmVmKVxuIHtcbiBcdHN0cnVjdCBkcGxsX3Bpbl9yZWdpc3RyYXRpb24gKnJlZztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmggYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcbmluZGV4IGUyNDU3NzExMzQzMTczLi5kYThhMzY5NTU2ZWQxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oXG5AQCAtOTMsNiAmIzQzOzkzLDcgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsIHN0cnVjdCBkcGxsX3BpbiAqcGluKTtcbiBcbiBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZpY2Vfb3BzICpkcGxsX2RldmljZV9vcHMoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsKTtcbiBzdHJ1Y3QgZHBsbF9kZXZpY2UgKmRwbGxfZGV2aWNlX2dldF9ieV9pZChpbnQgaWQpO1xuJiM0MztzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pO1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xuIHN0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfeGFfcmVmX2RwbGxfZmlyc3Qoc3RydWN0IHhhcnJheSAqeGFfcmVmcyk7XG4gZXh0ZXJuIHN0cnVjdCB4YXJyYXkgZHBsbF9kZXZpY2VfeGE7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXG5pbmRleCBiZjcyOWNkZTc5NmE3Ny4uYjNmMGNiN2QzZDM0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xuQEAgLTY5Niw3ICYjNDM7Njk2LDkgQEAgZHBsbF9jbWRfcGluX2dldF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZilcbiYjNDM7XHRcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4gXHRBU1NFUlRfTk9UX05VTEwocmVmKTtcbiBcbiBcdHJldCA9IGRwbGxfbXNnX2FkZF9waW5faGFuZGxlKG1zZywgcGluKTtcbkBAIC0xMDg3LDEyICYjNDM7MTA4OSwxOSBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldCB8fCAhb3BzLVx1MDAzZWZyZXF1ZW5jeV9nZXQpIHtcbi1cdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O2ZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXCYjMzQ7KTtcbiYjNDM7XHRcdGlmICgoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXHUwMDNlZnJlcXVlbmN5X2dldCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlbW9kdWxlID09IHBpbi1cdTAwM2Vtb2R1bGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlY2xvY2tfaWQgPT0gcGluLVx1MDAzZWNsb2NrX2lkKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICAgICAgXCYjMzQ7ZnJlcXVlbmN5IHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxuQEAgLTExMDYsNiAmIzQzOzExMTUsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7XG5AQCAtMTEyNSw2ICYjNDM7MTEzNiw4IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFx0XHRpZiAocmVmID09IGZhaWxlZClcbiBcdFx0XHRicmVhaztcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxuQEAgLTExNDgsMTMgJiM0MzsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXHUwMDNlZXN5bmNfZ2V0KSB7XG4mIzQzO1x0XHRpZiAoKCFvcHMtXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXHUwMDNlZXN5bmNfZ2V0KSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4gXHRcdFx0XHQgICAgICAgXCYjMzQ7ZW1iZWRkZWQgc3luYyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2VcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZXN5bmNfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsXG5AQCAtMTE3OCw2ICYjNDM7MTE5Nyw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcdFx0dm9pZCAqcGluX2RwbGxfcHJpdjtcbiBcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHBpbl9kcGxsX3ByaXYgPSBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKTtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcbkBAIC0xMjAxLDYgJiM0MzsxMjIyLDggQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFx0XHRpZiAocmVmID09IGZhaWxlZClcbiBcdFx0XHRicmVhaztcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHBpbl9kcGxsX3ByaXYgPSBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKTtcbiBcdFx0aWYgKG9wcy1cdTAwM2Vlc3luY19zZXQocGluLCBwaW5fZHBsbF9wcml2LCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksXG5AQCAtMTIzNSw4ICYjNDM7MTI1OCwxMSBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7cmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGVcJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4tXHRBU1NFUlRfTk9UX05VTEwocmVmKTtcbiYjNDM7XHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbiYjNDM7XHRpZiAoIXJlZikge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRpZiAoIW9wcy1cdTAwM2VyZWZfc3luY19zZXQgfHwgIW9wcy1cdTAwM2VyZWZfc3luY19nZXQpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluXCYjMzQ7KTtcbkBAIC0xMjU1LDYgJiM0MzsxMjgxLDggQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxuIFx0XHRyZXR1cm4gMDtcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZXJlZl9zeW5jX3NldClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0XHRyZWZfc3luY19waW4sXG5AQCAtMTI3Nyw2ICYjNDM7MTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdFx0aWYgKHJlZiA9PSBmYWlsZWQpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuJiM0MztcdFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0ICAgICAgcmVmX3N5bmNfcGluLFxuQEAgLTE0NjgsMTIgJiM0MzsxNDk4LDE4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuLVx0XHRpZiAoIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3Rfc2V0IHx8ICFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkge1xuJiM0MztcdFx0aWYgKCghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O3BoYXNlIGFkanVzdCBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4mIzQzO1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4mIzQzO1x0aWYgKCFyZWYpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7cGluIG93bmVyIGRwbGwgbm90IGZvdW5kXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdH1cbiBcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuIFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0cmV0ID0gb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbkBAIC0xNDg4LDYgJiM0MzsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4mIzQzO1x0XHRpZiAoIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3Rfc2V0KVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldChwaW4sXG4gXHRcdFx0XHRcdCAgICBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbkBAIC0xNTEwLDYgJiM0MzsxNTQ4LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiYjNDM7XHRcdGlmICghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdGlmIChvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxuIFx0XHRcdFx0XHQgIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwgb2xkX3BoYXNlX2FkaixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUExMJiMzNDssCiAgICAmIzM0O01MWDVfRFBMTCYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19PQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QmIzM0OywKICAgICYjMzQ7ZHBsbF9jbWRfcGluX2dldF9vbmUmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZnJlcV9zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZXN5bmNfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9waGFzZV9hZGpfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUExMIHN1YnN5c3RlbSYjMzk7cyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAyMDo0MzowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYwppbmRleCBiYjFlODY1MGM5ZDU5MC4uMjQ1ZjYyNWY0YjNiNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMKQEAgLTExNDYsNiAmIzQzOzExNDYsMzMgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsCiAJcmV0dXJuIHJlZy0mZ3Q7cHJpdjsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCAtIGZpbmQgdGhlIGZpcnN0IG93bmVyIGRwbGwgcmVmIG9mIGEgcGluCiYjNDM7ICogQHBpbjogcG9pbnRlciB0byBhIGRwbGwgcGluCiYjNDM7ICoKJiM0MzsgKiBTZWFyY2ggcGluJiMzOTtzIGRwbGxfcmVmcyBmb3IgYSByZWYgd2hvc2UgZHBsbCBtYXRjaGVzIHRoZSBwaW4mIzM5O3MKJiM0MzsgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyCiYjNDM7ICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmUKJiM0MzsgKiByZXBvcnRlZCBhbmQgbW9kaWZpZWQgdXNpbmcgdGhlIG93bmVyJiMzOTtzIG9wcyBldmVuIHdoZW4gdGhlIHBpbiBpcwomIzQzOyAqIGFsc28gcmVnaXN0ZXJlZCB3aXRoIGRwbGxzIGZyb20gb3RoZXIgZHJpdmVycy4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogcG9pbnRlciB0byB0aGUgb3duZXImIzM5O3MgZHBsbF9waW5fcmVmLCBvciBOVUxMIGlmIG5vCiYjNDM7ICogb3duZXIgcmVmIGlzIGZvdW5kLgomIzQzOyAqLwomIzQzO3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjsKJiM0MzsJdW5zaWduZWQgbG9uZyBpOwomIzQzOwomIzQzOwl4YV9mb3JfZWFjaCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzLCBpLCByZWYpIHsKJiM0MzsJCWlmIChyZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKQomIzQzOwkJCXJldHVybiByZWY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGRwbGxfcGluX29wcyAqZHBsbF9waW5fb3BzKHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZikKIHsKIAlzdHJ1Y3QgZHBsbF9waW5fcmVnaXN0cmF0aW9uICpyZWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmggYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmgKaW5kZXggZTI0NTc3MTEzNDMxNzMuLmRhOGEzNjk1NTZlZDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oCkBAIC05Myw2ICYjNDM7OTMsNyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCwgc3RydWN0IGRwbGxfcGluICpwaW4pOwogCiBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZpY2Vfb3BzICpkcGxsX2RldmljZV9vcHMoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsKTsKIHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbF9kZXZpY2VfZ2V0X2J5X2lkKGludCBpZCk7CiYjNDM7c3RydWN0IGRwbGxfcGluX3JlZiAqZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHN0cnVjdCBkcGxsX3BpbiAqcGluKTsKIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpOwogc3RydWN0IGRwbGxfcGluX3JlZiAqZHBsbF94YV9yZWZfZHBsbF9maXJzdChzdHJ1Y3QgeGFycmF5ICp4YV9yZWZzKTsKIGV4dGVybiBzdHJ1Y3QgeGFycmF5IGRwbGxfZGV2aWNlX3hhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jCmluZGV4IGJmNzI5Y2RlNzk2YTc3Li5iM2YwY2I3ZDNkMzQ5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuYwpAQCAtNjk2LDcgJiM0Mzs2OTYsOSBAQCBkcGxsX2NtZF9waW5fZ2V0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAlzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7CiAJaW50IHJldDsKIAotCXJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoJmFtcDtwaW4tJmd0O2RwbGxfcmVmcyk7CiYjNDM7CXJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pOwomIzQzOwlpZiAoIXJlZikKJiM0MzsJCXJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoJmFtcDtwaW4tJmd0O2RwbGxfcmVmcyk7CiAJQVNTRVJUX05PVF9OVUxMKHJlZik7CiAKIAlyZXQgPSBkcGxsX21zZ19hZGRfcGluX2hhbmRsZShtc2csIHBpbik7CkBAIC0xMDg3LDEyICYjNDM7MTA4OSwxOSBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQgfHwgIW9wcy0mZ3Q7ZnJlcXVlbmN5X2dldCkgewotCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O2ZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlJiMzNDspOwomIzQzOwkJaWYgKCghb3BzLSZndDtmcmVxdWVuY3lfc2V0IHx8ICFvcHMtJmd0O2ZyZXF1ZW5jeV9nZXQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLAomIzQzOwkJCQkgICAgICAgJiMzNDtmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSYjMzQ7KTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJcmV0ID0gb3BzLSZndDtmcmVxdWVuY3lfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsCkBAIC0xMTA2LDYgJiM0MzsxMTE1LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAKIAl4YV9mb3JfZWFjaCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzLCBpLCByZWYpIHsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZnJlcXVlbmN5X3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJcmV0ID0gb3BzLSZndDtmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksCiAJCQkJCSBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7CkBAIC0xMTI1LDYgJiM0MzsxMTM2LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAJCWlmIChyZWYgPT0gZmFpbGVkKQogCQkJYnJlYWs7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQpCiYjNDM7CQkJY29udGludWU7CiAJCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJCWlmIChvcHMtJmd0O2ZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkgICAgICAgZHBsbCwgZHBsbF9wcml2KGRwbGwpLCBvbGRfZnJlcSwgZXh0YWNrKSkKQEAgLTExNDgsMTMgJiM0MzsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O2VzeW5jX3NldCB8fCAhb3BzLSZndDtlc3luY19nZXQpIHsKJiM0MzsJCWlmICgoIW9wcy0mZ3Q7ZXN5bmNfc2V0IHx8ICFvcHMtJmd0O2VzeW5jX2dldCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHJlZi0mZ3Q7ZHBsbC0mZ3Q7bW9kdWxlID09IHBpbi0mZ3Q7bW9kdWxlICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O2Nsb2NrX2lkID09IHBpbi0mZ3Q7Y2xvY2tfaWQpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKIAkJCQkgICAgICAgJiMzNDtlbWJlZGRlZCBzeW5jIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGRldmljZSYjMzQ7KTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJcmV0ID0gb3BzLSZndDtlc3luY19nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwgZHBsbCwKQEAgLTExNzgsNiAmIzQzOzExOTcsOCBAQCBkcGxsX3Bpbl9lc3luY19zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsCiAJCXZvaWQgKnBpbl9kcGxsX3ByaXY7CiAKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZXN5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlwaW5fZHBsbF9wcml2ID0gZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbik7CiAJCXJldCA9IG9wcy0mZ3Q7ZXN5bmNfc2V0KHBpbiwgcGluX2RwbGxfcHJpdiwgZHBsbCwgZHBsbF9wcml2KGRwbGwpLApAQCAtMTIwMSw2ICYjNDM7MTIyMiw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7ZXN5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlwaW5fZHBsbF9wcml2ID0gZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbik7CiAJCWlmIChvcHMtJmd0O2VzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwKQEAgLTEyMzUsOCAmIzQzOzEyNTgsMTEgQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLAogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGUmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQlyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KCZhbXA7cGluLSZndDtkcGxsX3JlZnMpOwotCUFTU0VSVF9OT1RfTlVMTChyZWYpOwomIzQzOwlyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTsKJiM0MzsJaWYgKCFyZWYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtwaW4gb3duZXIgZHBsbCBub3QgZm91bmQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwogCWlmICghb3BzLSZndDtyZWZfc3luY19zZXQgfHwgIW9wcy0mZ3Q7cmVmX3N5bmNfZ2V0KSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluJiMzNDspOwpAQCAtMTI1NSw2ICYjNDM7MTI4MSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAkJcmV0dXJuIDA7CiAJeGFfZm9yX2VhY2goJmFtcDtwaW4tJmd0O2RwbGxfcmVmcywgaSwgcmVmKSB7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O3JlZl9zeW5jX3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJcmV0ID0gb3BzLSZndDtyZWZfc3luY19zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkJcmVmX3N5bmNfcGluLApAQCAtMTI3Nyw2ICYjNDM7MTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7cmVmX3N5bmNfc2V0KQomIzQzOwkJCWNvbnRpbnVlOwogCQlkcGxsID0gcmVmLSZndDtkcGxsOwogCQlpZiAob3BzLSZndDtyZWZfc3luY19zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKIAkJCQkgICAgICByZWZfc3luY19waW4sCkBAIC0xNDY4LDEyICYjNDM7MTQ5OCwxOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0ciwKIAogCXhhX2Zvcl9lYWNoKCZhbXA7cGluLSZndDtkcGxsX3JlZnMsIGksIHJlZikgewogCQlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKLQkJaWYgKCFvcHMtJmd0O3BoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy0mZ3Q7cGhhc2VfYWRqdXN0X2dldCkgewomIzQzOwkJaWYgKCghb3BzLSZndDtwaGFzZV9hZGp1c3Rfc2V0IHx8ICFvcHMtJmd0O3BoYXNlX2FkanVzdF9nZXQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICByZWYtJmd0O2RwbGwtJmd0O21vZHVsZSA9PSBwaW4tJmd0O21vZHVsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcmVmLSZndDtkcGxsLSZndDtjbG9ja19pZCA9PSBwaW4tJmd0O2Nsb2NrX2lkKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cGhhc2UgYWRqdXN0IG5vdCBzdXBwb3J0ZWQmIzM0Oyk7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAl9Ci0JcmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdCgmYW1wO3Bpbi0mZ3Q7ZHBsbF9yZWZzKTsKJiM0MzsJcmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7CiYjNDM7CWlmICghcmVmKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7cGluIG93bmVyIGRwbGwgbm90IGZvdW5kJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CX0KIAlvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTsKIAlkcGxsID0gcmVmLSZndDtkcGxsOwogCXJldCA9IG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLApAQCAtMTQ4OCw2ICYjNDM7MTUyNCw4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLAogCiAJeGFfZm9yX2VhY2goJmFtcDtwaW4tJmd0O2RwbGxfcmVmcywgaSwgcmVmKSB7CiAJCW9wcyA9IGRwbGxfcGluX29wcyhyZWYpOwomIzQzOwkJaWYgKCFvcHMtJmd0O3BoYXNlX2FkanVzdF9zZXQpCiYjNDM7CQkJY29udGludWU7CiAJCWRwbGwgPSByZWYtJmd0O2RwbGw7CiAJCXJldCA9IG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldChwaW4sCiAJCQkJCSAgICBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwKQEAgLTE1MTAsNiAmIzQzOzE1NDgsOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0ciwKIAkJaWYgKHJlZiA9PSBmYWlsZWQpCiAJCQlicmVhazsKIAkJb3BzID0gZHBsbF9waW5fb3BzKHJlZik7CiYjNDM7CQlpZiAoIW9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldCkKJiM0MzsJCQljb250aW51ZTsKIAkJZHBsbCA9IHJlZi0mZ3Q7ZHBsbDsKIAkJaWYgKG9wcy0mZ3Q7cGhhc2VfYWRqdXN0X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLAogCQkJCQkgIGRwbGwsIGRwbGxfcHJpdihkcGxsKSwgb2xkX3BoYXNlX2FkaiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEUExMIFN1YnN5c3RlbSBQYXRjaCBBbmFseXNpcyAmYW1wOyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdG91Y2hpbmcgdGhlIERQTEwgY29yZSDigJMgc3BlY2lmaWNhbGx5IGBkcGxsX2NvcmUuY2AsIGBkcGxsX2NvcmUuaGAsIGFuZCBgZHBsbF9uZXRsaW5rLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0YC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBwdXJwb3NlIGlzIHRvIHByb3ZpZGUgYSBtb3JlIHNwZWNpZmljIHdheSB0byBmaW5kIHRoZSBpbml0aWFsIERQTEwgcmVmZXJlbmNlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgcGluLgoKQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGNhbGxzIHRvIGBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0YCB3aXRoIHRoaXMgbmV3IGZ1bmN0aW9uIHdpdGhpbiBhIGJ1bmNoIG9mIGNyaXRpY2FsIERQTEwgb3BlcmF0aW9uczogYGRwbGxfY21kX3Bpbl9nZXRfb25lYCwgYGRwbGxfcGluX2ZyZXFfc2V0YCwgYGRwbGxfcGluX2VzeW5jX3NldGAsIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgLCBhbmQgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgZWl0aGVyIGNsYXJpdHkgb3IgY29ycmVjdG5lc3Mgd2l0aGluIHRoZSBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcgdXNlZCBmb3IgdGhlIERQTEwgc3Vic3lzdGVtLiBBZGRpdGlvbmFsbHksIEkgc2VlIHRoZXkmIzM5O3JlIGFkZGluZyBpbiBjaGVja3MgdG8gc2VlIGlmIGBvcHMtJmd0O2ZyZXF1ZW5jeV9zZXRgIGV0YyBhcmUgdmFsaWQgdG8gcHJldmVudCBjcmFzaGVzIOKAkyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYnV0IHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgd2hlbiBmdXp6aW5nLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBEUExMIHN5c3RlbSwgd2hpY2ggd2Uga25vdyBpcyBleHBvc2VkIHZpYSBuZXRsaW5rLiBHaXZlbiB0aGlzIHRvdWNoIG9uIGNvcmUgZnVuY3Rpb25hbGl0eSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKmZ1enppbmcqLiBXZSBuZWVkIHRvIHRob3JvdWdobHkgdGVzdCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIG5ldGxpbmstYWNjZXNzaWJsZS4gQW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaGVyZSBjb3VsZCBiZSBleHBsb2l0ZWQgcmVtb3RlbHkuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIERQTEwuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IGBDT05GSUdfRFBMTGAgc2V0dGluZ3MuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBEUExMIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCwgdGhlcmVmb3JlLCBob3cgaXQgY2FuIGJlIHRhcmdldGVkIGJ5IGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHdoaWNoIG9uZXMgYXJlIGRpc2FibGVkLCBzbyBJIGNhbiBlbnN1cmUgYSBmdWxsIGNvdmVyYWdlIG9mIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFBMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvS2NvbmZpZz02PW1lbnUgXCYjMzQ7RFBMTCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9kcGxsL0tjb25maWctNy1cbmRyaXZlcnMvZHBsbC9LY29uZmlnOjg6Y29uZmlnIERQTExcbmRyaXZlcnMvZHBsbC9LY29uZmlnLTktXHRib29sXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMC1cbmRyaXZlcnMvZHBsbC9LY29uZmlnOjExOmNvbmZpZyBEUExMX1JFRkNOVF9UUkFDS0VSXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMi1cdGJvb2wgXCYjMzQ7RFBMTCByZWZlcmVuY2UgY291bnQgdHJhY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19EUExMYCBEZXBlbmRlbmN5KioKClJpZ2h0LCBgQ09ORklHX0RQTExgIGlzIGEgYm9vbGVhbiwgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aG8mIzM5O3MgKnVzaW5nKiB0aGlzPyBJdOKAmXMgdXN1YWxseSBzZWxlY3RlZCBieSBkcml2ZXJzLiBJdCYjMzk7cyB0aW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBDT05GSUdfRFBMTGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgaGVyZSB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGhlbHBzIG1lIG5hcnJvdyBkb3duIHdoZXJlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBwcm9ibGVtcyBvciBvcHRpbWl6YXRpb25zLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgaXQsIG9mIGNvdXJzZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFBMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTUtXHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZzo2Olx0c2VsZWN0IERQTExcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNy1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNS1cdHNlbGVjdCBQTERNRldcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzA2Olx0c2VsZWN0IERQTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIwMz1jb25maWcgTUxYNV9EUExMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjA1LVx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBFVEhFUk5FVCBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjIwNjpcdHNlbGVjdCBEUExMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDctXHRoZWxwXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjE5LVx0c2VsZWN0IENSQzE2XG5kcml2ZXJzL3B0cC9LY29uZmlnOjIyMDpcdHNlbGVjdCBEUExMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRFBMTCBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIERQTEwgc3Vic3lzdGVtIGlzIGJlaW5nIGJyb3VnaHQgaW4gYnkgYSBmZXcgZGlmZmVyZW50IGRyaXZlcnM6IGBJQ0VgLCBgTUxYNV9EUExMYCwgYFBUUF8xNTg4X0NMT0NLX09DUGAsIGFuZCBgWkwzMDczWGAuIE1ha2VzIHNlbnNlLCBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNsb2NraW5nIGVsZW1lbnQuIFRoZSBjb2RlJiMzOTtzIG1ha2luZyBpdCBjbGVhciB0aGF0IGBEUExMYCBpcyBhIGNvcmUgc3Vic3lzdGVtIGFuZCwgc2luY2UgaXQmIzM5O3MgZGVmaW5lZCBhcyBhIGJvb2xlYW4gd2l0aG91dCBhIHByb21wdCwgdGhlIG9ubHkgd2F5IGl0IGdldHMgZW5hYmxlZCBpcyB0aHJvdWdoIGEgc2VsZWN0aW9uLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCB0aGVvcmV0aWNhbGx5LiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2RwbGwvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBzZWxlY3Rpb24gd29ya3MsIGFyZSB0aGVyZSBmdXJ0aGVyIGRlcGVuZGVuY2llcz8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIHNjaGVtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgR2VuZXJpYyBEUExMIGRyaXZlcnMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O0RQTEwgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgRFBMTFxuICAgOTpcdFx0Ym9vbFxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBEUExMX1JFRkNOVF9UUkFDS0VSXG4gIDEyOlx0XHRib29sIFwmIzM0O0RQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXCYjMzQ7XG4gIDEzOlx0XHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTCBcdTAwMjZcdTAwMjYgU1RBQ0tUUkFDRV9TVVBQT1JUIFx1MDAyNlx1MDAyNiBEUExMXG4gIDE0Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgRW5hYmxlIHJlZmVyZW5jZSBjb3VudCB0cmFja2luZyBmb3IgRFBMTCBkZXZpY2VzIGFuZCBwaW5zLlxuICAxNzpcdFx0ICBUaGlzIGhlbHBzIGRlYnVnZ2luZyByZWZlcmVuY2UgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3NcbiAgMTg6XHRcdCAgYnkgcmVjb3JkaW5nIHN0YWNrIHRyYWNlcyBmb3IgZWFjaCBnZXQvcHV0IG9wZXJhdGlvbi5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgVGhlIHRyYWNraW5nIGluZm9ybWF0aW9uIGlzIGV4cG9zZWQgdmlhIGRlYnVnZnMgYXQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEUExMIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGNvbmZpZ3VyZSBEUExMIGZvciBmdXp6aW5nLiBTaW5jZSBpdCYjMzk7cyBhIGJvb2xlYW4gb3B0aW9uIGFuZCBkb2VzbiYjMzk7dCBoYXZlIGEgZGlyZWN0IHByb21wdCwgSSBjYW4mIzM5O3QganVzdCBlbmFibGUgaXQgdGhyb3VnaCBgbWFrZSBkZWZjb25maWdgIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVpdGhlciBsaXN0IGBEUExMYCBpbiB0aGUgY29uZmlnIGFuZCBob3BlIFN5emthbGxlciYjMzk7cyBzeXN0ZW0gZmlndXJlcyBpdCBvdXQsIG9yIHRvIGV4cGxpY2l0bHkgbGlzdCBhIGRyaXZlciB0aGF0IHNlbGVjdHMgaXQuIEl0JiMzOTtzIHVzdWFsbHkgc2FmZXIgdG8gYmUgZXhwbGljaXQuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgYXBwcm9hY2guIEJlY2F1c2UgaXQmIzM5O3MgYSBib29sLCBpdCYjMzk7cyBwb3NzaWJsZSBTeXprYWxsZXImIzM5O3MgY29uZmlnIHN5c3RlbSBtaWdodCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBpdCBpZiBpdCYjMzk7cyBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZS4gQnV0IEkgc3RpbGwgd2FudCB0byBiZSBwcmVjaXNlLiBJJiMzOTttIGdvaW5nIHRvIGxpc3QgYSBkcml2ZXIga25vd24gdG8gc2VsZWN0IGl0LCBsaWtlIGBaTDMwNzNYYCBvciBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCwgb3IgYERQTExgIGRpcmVjdGx5IGFzIGl0JiMzOTtzIHRoZSBjb3JlIHN1YnN5c3RlbS4KClRvIGhlbHAgd2l0aCB0aGlzLCBJJiMzOTttIGNoZWNraW5nIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgcmVsYXRlZCB0byBEUExMLCB0byBzZWUgd2hhdCB0aGV5IGZvY3VzIG9uOgoqICAgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAKKiAgIGBkcGxsX2NtZF9waW5fZ2V0X29uZWAKKiAgIGBkcGxsX3Bpbl9mcmVxX3NldGAKKiAgIGBkcGxsX3Bpbl9lc3luY19zZXRgCiogICBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YAoqICAgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgCgpUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gbmV0bGluayBoYW5kbGVycyBvciBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBpZGVhIG9mIHdoYXQmIzM5O3MgYmVlbiByZWNlbnRseSBhY3RpdmUuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgd2hlbiB0ZXN0aW5nOgoqICAgYGRwbGxfY21kX3Bpbl9nZXRfb25lYAoqICAgYGRwbGxfcGluX2ZyZXFfc2V0YAoqICAgYGRwbGxfcGluX2VzeW5jX3NldGAKKiAgIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgCiogICBgZHBsbF9waW5fcGhhc2VfYWRqX3NldGAKCk15IG5leHQgc3RlcCBpcyB0byBkb3VibGUtY2hlY2sgaWYgYERQTExgICpjYW4qIGJlIGRpcmVjdGx5IGVuYWJsZWQuIEFsdGhvdWdoIFN5emthbGxlciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIGJvb2xlYW4gb3B0aW9ucyB3aXRob3V0IGRpcmVjdCBwcm9tcHRzLCBleHBsaWNpdGx5IHNlbGVjdGluZyBhIGRyaXZlciBpcyBjbGVhbmVyIGFuZCBtb3JlIHJlbGlhYmxlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBaTDMwNzNYYCwgaW4gYGRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWdgLiBJJiMzOTtsbCBjb25maXJtIHRoYXQmIzM5O3MgYSB2YWxpZCB3YXkgdG8gZW5hYmxlIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgWkwzMDczWFxuICAgNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEF6dXJpdGUgRFBMTC9QVFAvU3luY0UgZGV2aWNlc1wmIzM0OyBpZiBDT01QSUxFX1RFU1RcbiAgIDU6XHRcdGRlcGVuZHMgb24gTkVUXG4gICA2Olx0XHRzZWxlY3QgRFBMTFxuICAgNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gICA4Olx0XHRzZWxlY3QgUkVHTUFQXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBBenVyaXRlIGZhbWlseSBEUExML1BUUC9TeW5jRVxuICAxMTpcdFx0ICBkZXZpY2VzIHRoYXQgc3VwcG9ydCB1cCB0byA1IGluZGVwZW5kZW50IERQTEwgY2hhbm5lbHMsXG4gIDEyOlx0XHQgIDEwIGlucHV0IHBpbnMgYW5kIHVwIHRvIDIwIG91dHB1dCBwaW5zLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDE1Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHpsMzA3M3guXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFpMMzA3M1hfSTJDXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNaWNyb2NoaXAgQXp1cml0ZSBkZXZpY2VzXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEkyQyBcdTAwMjZcdTAwMjYgTkVUXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqQW5hbHl6aW5nIHRoZSBaTDMwNzNYIERlY2xhcmF0aW9uKioKCk9rYXksIHNvIGBaTDMwNzNYYCBpcyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgZm9yIHRoZSAmIzM0O01pY3JvY2hpcCBBenVyaXRlIERQTEwvUFRQL1N5bmNFIGRldmljZXMuJiMzNDsgVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHNwZWNpZmljLCBhbmQgcmVsZXZhbnQsIEkmIzM5O20gYWxyZWFkeSBhd2FyZSBvZiB0aGlzIHRlY2hub2xvZ3kuIEJ1dCwgYW5kIGhlcmUmIzM5O3MgdGhlIGtpY2tlciwgKml0JiMzOTtzIG9ubHkgYWN0dWFsbHkgdmlzaWJsZSBpZiogYENPTVBJTEVfVEVTVGAgKmlzIGRlZmluZWQqLiBSaWdodCwgZ290IGl0LiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBzcGVjaWZpYyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIG5vIHN1cnByaXNlcyB0aGVyZS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGBQVFBfMTU4OF9DTE9DS19PQ1BgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBaTDMwNzNYYCBhbmQgd2hldGhlciB0aGlzIGBDT01QSUxFX1RFU1RgIGRlcGVuZGVuY3kgYWxzbyBhcHBsaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFyb3VuZCB0aGVzZSBkZWZpbml0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjEwOlx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuIDIxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4gMjEyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gMjEzOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgUENJXG4gMjE0Olx0XHRkZXBlbmRzIG9uIEkyQyBcdTAwMjZcdTAwMjYgTVREXG4gMjE1Olx0XHRkZXBlbmRzIG9uIFNFUklBTF84MjUwXG4gMjE2Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gMjE3Olx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAyMTg6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDIxOTpcdFx0c2VsZWN0IENSQzE2XG4gMjIwOlx0XHRzZWxlY3QgRFBMTFxuIDIyMTpcdFx0aGVscFxuIDIyMjpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIGFuIE9wZW5Db21wdXRlIHRpbWUgY2FyZC5cbiAyMjM6XHRcbiAyMjQ6XHRcdCAgVGhlIE9wZW5Db21wdXRlIHRpbWUgY2FyZCBpcyBhbiBhdG9taWMgY2xvY2sgYWxvbmcgd2l0aFxuIDIyNTpcdFx0ICBhIEdQUyByZWNlaXZlciB0aGF0IHByb3ZpZGVzIGEgR3JhbmRtYXN0ZXIgY2xvY2sgc291cmNlXG4gMjI2Olx0XHQgIGZvciBhIFBUUCBlbmFibGVkIG5ldHdvcmsuXG4gMjI3Olx0XG4gMjI4Olx0XHQgIE1vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudGltaW5nY2FyZC5jb20vXG4gMjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNjkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDbG9jayBhbmQgUExMIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIGBQVFBfMTU4OF9DTE9DS19PQ1BgIG91dCB0aGVyZS4gVGhhdCYjMzk7cyBnb29kLCBhIGtub3duIGZhY3Rvci4gTm93IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sICYjMzQ7T2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGBNTFg1X0RQTExgPyBXaGVyZSBpcyB0aGF0IGluIHRoZSBwaWN0dXJlPyYjMzQ7IFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY2xvY2tpbmcgYW5kIFBMTHMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGNvbXBvbmVudHMsIGFuZCB0aGVpciBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3lzdGVtLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25uZWN0aW9uIHRvIG1ha2UgdG8gZW5zdXJlIHRpbWluZyBhbmQgc3luY2hyb25pemF0aW9uIGFyZSB3b3JraW5nIGNvcnJlY3RseSwgYW5kIEkgbmVlZCB0byBjb25zaWRlciBpdCYjMzk7cyBzdGF0dXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMzpcdGNvbmZpZyBNTFg1X0RQTExcbiAyMDQ6XHRcdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRFBMTCBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuIDIwNjpcdFx0c2VsZWN0IERQTExcbiAyMDc6XHRcdGhlbHBcbiAyMDg6XHRcdCAgRFBMTCBzdXBwb3J0IGluIE1lbGxhbm94IFRlY2hub2xvZ2llcyBDb25uZWN0WCBOSUNzLlxuIDIwOTpcdFxuIDIxMDpcdGNvbmZpZyBNTFg1X0VOX1BTUFxuIDIxMTpcdFx0Ym9vbCBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgc3VwcG9ydCBmb3IgUFNQIGNyeXB0b2dyYXBoeS1vZmZsb2FkIGFjY2VsZXJhdGlvblwmIzM0O1xuIDIxMjpcdFx0ZGVwZW5kcyBvbiBJTkVUX1BTUFxuIDIxMzpcdFx0ZGVwZW5kcyBvbiBNTFg1X0NPUkVfRU5cbiAyMTQ6XHRcdGRlZmF1bHQgeVxuIDIxNTpcdFx0aGVscFxuIDIxNjpcdFx0ICBtbHg1IGRldmljZSBvZmZsb2FkIHN1cHBvcnQgZm9yIEdvb2dsZSBQU1AgU2VjdXJpdHkgUHJvdG9jb2wgb2ZmbG9hZC5cbiAyMTc6XHRcdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxuIDIxODpcdFx0ICBpbnRlcmZhY2VzIHRvIFBTUCBTdGFjayB3aGljaCBzdXBwb3J0cyBQU1AgY3J5cHRvIG9mZmxvYWQuXG4gMjE5Olx0XG4gMjIwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4ODEKCQkJCQkJCW91dHB1dDogMTk5CgkJCQkJCQl0aG91Z2h0czogNDA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIERQTEwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgTUxYNV9EUExMYCBpcyBhbHNvIGluIHRoZSBtaXguIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBEUExMIGZ1bmN0aW9uYWxpdHkgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFkZCBgRFBMTGAgdG8gRW5hYmxlQ29uZmlncywgYW5kIHByb2JhYmx5IGFsc28gYE1MWDVfRFBMTGAgYW5kIGBQVFBfMTU4OF9DTE9DS19PQ1BgIGp1c3QgdG8gYmUgc2FmZSBhbmQgZW5zdXJlIHRoZSByZWxldmFudCBwYXJ0cyBhcmUgc2VsZWN0ZWQuCgpMZXQgbWUgdmVyaWZ5IHRoZSBsb2dpYyBoZXJlLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IHRoZSBEUExMIG5ldGxpbmsgaGFuZGxlcnMgd29yaywgdXNpbmcgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAgdG8gZmluZCB0aGUgb3duaW5nIERQTEwgcmVmZXJlbmNlIGZvciBhIHBpbi4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGNoZWNrcyB0byBwcmV2ZW50IGNyYXNoZXMgb3IgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWNyb3NzIGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9mIHRoZSBEUExMIHN1YnN5c3RlbSwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXItc3BhY2UuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSYjMzk7bSBzZWVpbmc6IGBkcGxsX2NtZF9waW5fZ2V0X29uZWAsIGBkcGxsX3Bpbl9mcmVxX3NldGAsIGBkcGxsX3Bpbl9lc3luY19zZXRgLCBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YCwgYW5kIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YC4gVGhlc2UgYXJlIGFsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgb3IgdXRpbGl0eSBmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhvc2UgaGFuZGxlcnMuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhlc2UgYXJlbiYjMzk7dCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHBlcmZvcm1hbmNlIGltcGFjdCBpcyBsaWtlbHkgbWluaW1hbCwgYnV0IGl0JiMzOTtzIGFsd2F5cyB3b3J0aCBrZWVwaW5nIGluIG1pbmQuCgpJJiMzOTttIHdvbmRlcmluZyBpZiBzcGVjaWZ5aW5nIGp1c3QgYERQTExgIHdpbGwgd29yayBhcyBpcy4gU3l6a2FsbGVyJiMzOTtzIGNvbmZpZyBzeXN0ZW0gbWlnaHQganVzdCBlbmFibGUgaXQsIGJ1dCBzaW5jZSBpdCYjMzk7cyBhIHNpbXBsZSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQsIGl0JiMzOTtzIHNhZmVyIHRvIHNwZWNpZnkgYSBkZXBlbmRlbmN5IGxpa2UgYE1MWDVfRFBMTGAgb3IgYFBUUF8xNTg4X0NMT0NLX09DUGAsIG9yIGBJQ0VgLiBJJiMzOTtsbCBqdXN0IGJlIGV4cGxpY2l0IGFuZCBhZGQgYWxsIG9mIHRob3NlIHRvIG15IGNvbmZpZ3VyYXRpb246IGBEUExMYCwgYE1MWDVfRFBMTGAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT0NQYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIG9uIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgIHNpbmNlIGl0JiMzOTtzIGEgbmV3IGZ1bmN0aW9uLiBJJiMzOTtsbCBhZGQgdGhhdCB0byBGb2N1c1N5bWJvbHMsIHRvby4KCkFscmlnaHQsIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUExMJiMzNDssCiAgICAmIzM0O01MWDVfRFBMTCYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19PQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QmIzM0OywKICAgICYjMzQ7ZHBsbF9jbWRfcGluX2dldF9vbmUmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZnJlcV9zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fZXN5bmNfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9waGFzZV9hZGpfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUExMIHN1YnN5c3RlbSYjMzk7cyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQTEwmIzM0OywKICAgICYjMzQ7TUxYNV9EUExMJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX09DUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdCYjMzQ7LAogICAgJiMzNDtkcGxsX2NtZF9waW5fZ2V0X29uZSYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9mcmVxX3NldCYjMzQ7LAogICAgJiMzNDtkcGxsX3Bpbl9lc3luY19zZXQmIzM0OywKICAgICYjMzQ7ZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0JiMzNDssCiAgICAmIzM0O2RwbGxfcGluX3BoYXNlX2Fkal9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJiMzOTtzIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgb3duZXIgRFBMTCByZWZlcmVuY2Ugb2YgYSBwaW4gYW5kIGFkZHMgY2hlY2tzIHRvIHByZXZlbnQgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHJlZmVyZW5jZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKG5ldGxpbmsgaW50ZXJmYWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjA4LjA0NTk1NjI2MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDEwMzcyNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQTExcIixcbiAgICBcIk1MWDVfRFBMTFwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfT0NQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0XCIsXG4gICAgXCJkcGxsX2NtZF9waW5fZ2V0X29uZVwiLFxuICAgIFwiZHBsbF9waW5fZnJlcV9zZXRcIixcbiAgICBcImRwbGxfcGluX2VzeW5jX3NldFwiLFxuICAgIFwiZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9waGFzZV9hZGpfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQTEwgc3Vic3lzdGVtJ3MgbmV0bGluayBpbnRlcmZhY2UgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBvd25lciBEUExMIHJlZmVyZW5jZSBvZiBhIHBpbiBhbmQgYWRkcyBjaGVja3MgdG8gcHJldmVudCBmYWlsdXJlcyB3aGVuIGNlcnRhaW4gb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSBhbGwgcmVmZXJlbmNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAobmV0bGluayBpbnRlcmZhY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzowOC4wNDU5NjQ2NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTQzNTgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ0MThkZTk0Mjg1OGVjMDU4NDQzYmY3ZGVlOWVlMjkwYjg5ODk1NmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMjA6NDM6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jIGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXFxuaW5kZXggYmIxZTg2NTBjOWQ1OTAuLjI0NWY2MjVmNGIzYjQ3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xcbkBAIC0xMTQ2LDYgKzExNDYsMzMgQEAgdm9pZCAqZHBsbF9waW5fb25fcGluX3ByaXYoc3RydWN0IGRwbGxfcGluICpwYXJlbnQsXFxuIFxcdHJldHVybiByZWctXFx1MDAzZXByaXY7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QgLSBmaW5kIHRoZSBmaXJzdCBvd25lciBkcGxsIHJlZiBvZiBhIHBpblxcbisgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cXG4rICpcXG4rICogU2VhcmNoIHBpbidzIGRwbGxfcmVmcyBmb3IgYSByZWYgd2hvc2UgZHBsbCBtYXRjaGVzIHRoZSBwaW4nc1xcbisgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyXFxuKyAqIHRoYXQgY3JlYXRlZCB0aGUgcGluLiBUaGlzIGVuc3VyZXMgcGluLWxldmVsIGF0dHJpYnV0ZXMgYXJlXFxuKyAqIHJlcG9ydGVkIGFuZCBtb2RpZmllZCB1c2luZyB0aGUgb3duZXIncyBvcHMgZXZlbiB3aGVuIHRoZSBwaW4gaXNcXG4rICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxcbisgKlxcbisgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG93bmVyJ3MgZHBsbF9waW5fcmVmLCBvciBOVUxMIGlmIG5vXFxuKyAqIG93bmVyIHJlZiBpcyBmb3VuZC5cXG4rICovXFxuK3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbilcXG4re1xcbitcXHRzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWY7XFxuK1xcdHVuc2lnbmVkIGxvbmcgaTtcXG4rXFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuK1xcdFxcdGlmIChyZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKVxcbitcXHRcXHRcXHRyZXR1cm4gcmVmO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IGRwbGxfcGluX29wcyAqZHBsbF9waW5fb3BzKHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZilcXG4ge1xcbiBcXHRzdHJ1Y3QgZHBsbF9waW5fcmVnaXN0cmF0aW9uICpyZWc7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaCBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxcbmluZGV4IGUyNDU3NzExMzQzMTczLi5kYThhMzY5NTU2ZWQxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcXG5AQCAtOTMsNiArOTMsNyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCwgc3RydWN0IGRwbGxfcGluICpwaW4pO1xcbiBcXG4gY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlX29wcyAqZHBsbF9kZXZpY2Vfb3BzKHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCk7XFxuIHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbF9kZXZpY2VfZ2V0X2J5X2lkKGludCBpZCk7XFxuK3N0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChzdHJ1Y3QgZHBsbF9waW4gKnBpbik7XFxuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xcbiBzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KHN0cnVjdCB4YXJyYXkgKnhhX3JlZnMpO1xcbiBleHRlcm4gc3RydWN0IHhhcnJheSBkcGxsX2RldmljZV94YTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXFxuaW5kZXggYmY3MjljZGU3OTZhNzcuLmIzZjBjYjdkM2QzNDlhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xcbkBAIC02OTYsNyArNjk2LDkgQEAgZHBsbF9jbWRfcGluX2dldF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRwbGxfcGluICpwaW4sXFxuIFxcdHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzKTtcXG4rXFx0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XFxuK1xcdGlmICghcmVmKVxcbitcXHRcXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuIFxcdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xcbiBcXG4gXFx0cmV0ID0gZHBsbF9tc2dfYWRkX3Bpbl9oYW5kbGUobXNnLCBwaW4pO1xcbkBAIC0xMDg3LDEyICsxMDg5LDE5IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxcbiBcXG4gXFx0eGFfZm9yX2VhY2goXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcXG4gXFx0XFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuLVxcdFxcdGlmICghb3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9nZXQpIHtcXG4tXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiZnJlcXVlbmN5IHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcXFwiKTtcXG4rXFx0XFx0aWYgKCghb3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0IHx8ICFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9nZXQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdHJldCA9IG9wcy1cXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxcbkBAIC0xMTA2LDYgKzExMTUsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFxuIFxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZnJlcXVlbmN5X3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdHJldCA9IG9wcy1cXHUwMDNlZnJlcXVlbmN5X3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHRcXHQgZHBsbCwgZHBsbF9wcml2KGRwbGwpLCBmcmVxLCBleHRhY2spO1xcbkBAIC0xMTI1LDYgKzExMzYsOCBAQCBkcGxsX3Bpbl9mcmVxX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFx0XFx0aWYgKHJlZiA9PSBmYWlsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZWZyZXF1ZW5jeV9zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRpZiAob3BzLVxcdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxcbkBAIC0xMTQ4LDEzICsxMTYxLDE5IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFxuIFxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbi1cXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0IHx8ICFvcHMtXFx1MDAzZWVzeW5jX2dldCkge1xcbitcXHRcXHRpZiAoKCFvcHMtXFx1MDAzZWVzeW5jX3NldCB8fCAhb3BzLVxcdTAwM2Vlc3luY19nZXQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZW1vZHVsZSA9PSBwaW4tXFx1MDAzZW1vZHVsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVmLVxcdTAwM2VkcGxsLVxcdTAwM2VjbG9ja19pZCA9PSBwaW4tXFx1MDAzZWNsb2NrX2lkKSB7XFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJlbWJlZGRlZCBzeW5jIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGRldmljZVxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFxcdTAwMjZwaW4tXFx1MDAzZWRwbGxfcmVmcyk7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdHJldCA9IG9wcy1cXHUwMDNlZXN5bmNfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksIGRwbGwsXFxuQEAgLTExNzgsNiArMTE5Nyw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcXG4gXFx0XFx0dm9pZCAqcGluX2RwbGxfcHJpdjtcXG4gXFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZHBsbCA9IHJlZi1cXHUwMDNlZHBsbDtcXG4gXFx0XFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcXG5AQCAtMTIwMSw2ICsxMjIyLDggQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxcbiBcXHRcXHRpZiAocmVmID09IGZhaWxlZClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlZXN5bmNfc2V0KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZHBsbCA9IHJlZi1cXHUwMDNlZHBsbDtcXG4gXFx0XFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xcbiBcXHRcXHRpZiAob3BzLVxcdTAwM2Vlc3luY19zZXQocGluLCBwaW5fZHBsbF9wcml2LCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksXFxuQEAgLTEyMzUsOCArMTI1OCwxMSBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcInJlZmVyZW5jZSBzeW5jIHBpbiBub3QgYXZhaWxhYmxlXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuLVxcdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzKTtcXG4tXFx0QVNTRVJUX05PVF9OVUxMKHJlZik7XFxuK1xcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xcbitcXHRpZiAoIXJlZikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcdH1cXG4gXFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuIFxcdGlmICghb3BzLVxcdTAwM2VyZWZfc3luY19zZXQgfHwgIW9wcy1cXHUwMDNlcmVmX3N5bmNfZ2V0KSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcInJlZmVyZW5jZSBzeW5jIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwaW5cXFwiKTtcXG5AQCAtMTI1NSw2ICsxMjgxLDggQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0eGFfZm9yX2VhY2goXFx1MDAyNnBpbi1cXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcXG4gXFx0XFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XFxuK1xcdFxcdGlmICghb3BzLVxcdTAwM2VyZWZfc3luY19zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHRcXHRyZWZfc3luY19waW4sXFxuQEAgLTEyNzcsNiArMTMwNSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcXG4gXFx0XFx0aWYgKHJlZiA9PSBmYWlsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXJlZl9zeW5jX3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdGlmIChvcHMtXFx1MDAzZXJlZl9zeW5jX3NldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLFxcbiBcXHRcXHRcXHRcXHQgICAgICByZWZfc3luY19waW4sXFxuQEAgLTE0NjgsMTIgKzE0OTgsMTggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXFxuIFxcbiBcXHR4YV9mb3JfZWFjaChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4tXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkge1xcbitcXHRcXHRpZiAoKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X2dldCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHJlZi1cXHUwMDNlZHBsbC1cXHUwMDNlbW9kdWxlID09IHBpbi1cXHUwMDNlbW9kdWxlIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICByZWYtXFx1MDAzZWRwbGwtXFx1MDAzZWNsb2NrX2lkID09IHBpbi1cXHUwMDNlY2xvY2tfaWQpIHtcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwicGhhc2UgYWRqdXN0IG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tXFx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMpO1xcbitcXHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcXG4rXFx0aWYgKCFyZWYpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwicGluIG93bmVyIGRwbGwgbm90IGZvdW5kXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuIFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbiBcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRyZXQgPSBvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcXG5AQCAtMTQ4OCw2ICsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXFxuIFxcbiBcXHR4YV9mb3JfZWFjaChcXHUwMDI2cGluLVxcdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xcbiBcXHRcXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcXG4rXFx0XFx0aWYgKCFvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkcGxsID0gcmVmLVxcdTAwM2VkcGxsO1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXFxuQEAgLTE1MTAsNiArMTU0OCw4IEBAIGRwbGxfcGluX3BoYXNlX2Fkal9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKnBoYXNlX2Fkal9hdHRyLFxcbiBcXHRcXHRpZiAocmVmID09IGZhaWxlZClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xcbitcXHRcXHRpZiAoIW9wcy1cXHUwMDNlcGhhc2VfYWRqdXN0X3NldClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRwbGwgPSByZWYtXFx1MDAzZWRwbGw7XFxuIFxcdFxcdGlmIChvcHMtXFx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9waGFzZV9hZGosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjA4Ljc5NjgxMzkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNTk1MDA0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDQxOGRlOTQyODU4ZWMwNTg0NDNiZjdkZWU5ZWUyOTBiODk4OTU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIwOjQzOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jIGIvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jXG5pbmRleCBiYjFlODY1MGM5ZDU5MC4uMjQ1ZjYyNWY0YjNiNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmNcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuY1xuQEAgLTExNDYsNiArMTE0NiwzMyBAQCB2b2lkICpkcGxsX3Bpbl9vbl9waW5fcHJpdihzdHJ1Y3QgZHBsbF9waW4gKnBhcmVudCxcbiBcdHJldHVybiByZWctXHUwMDNlcHJpdjtcbiB9XG4gXG4rLyoqXG4rICogZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0IC0gZmluZCB0aGUgZmlyc3Qgb3duZXIgZHBsbCByZWYgb2YgYSBwaW5cbisgKiBAcGluOiBwb2ludGVyIHRvIGEgZHBsbCBwaW5cbisgKlxuKyAqIFNlYXJjaCBwaW4ncyBkcGxsX3JlZnMgZm9yIGEgcmVmIHdob3NlIGRwbGwgbWF0Y2hlcyB0aGUgcGluJ3NcbisgKiAobW9kdWxlLCBjbG9ja19pZCkgdHVwbGUsIGkuZS4gdGhlIGRwbGwgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyXG4rICogdGhhdCBjcmVhdGVkIHRoZSBwaW4uIFRoaXMgZW5zdXJlcyBwaW4tbGV2ZWwgYXR0cmlidXRlcyBhcmVcbisgKiByZXBvcnRlZCBhbmQgbW9kaWZpZWQgdXNpbmcgdGhlIG93bmVyJ3Mgb3BzIGV2ZW4gd2hlbiB0aGUgcGluIGlzXG4rICogYWxzbyByZWdpc3RlcmVkIHdpdGggZHBsbHMgZnJvbSBvdGhlciBkcml2ZXJzLlxuKyAqXG4rICogUmV0dXJuOiBwb2ludGVyIHRvIHRoZSBvd25lcidzIGRwbGxfcGluX3JlZiwgb3IgTlVMTCBpZiBub1xuKyAqIG93bmVyIHJlZiBpcyBmb3VuZC5cbisgKi9cbitzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pXG4re1xuK1x0c3RydWN0IGRwbGxfcGluX3JlZiAqcmVmO1xuK1x0dW5zaWduZWQgbG9uZyBpO1xuK1xuK1x0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4rXHRcdGlmIChyZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZWNsb2NrX2lkID09IHBpbi1cdTAwM2VjbG9ja19pZClcbitcdFx0XHRyZXR1cm4gcmVmO1xuK1x0fVxuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IGRwbGxfcGluX3JlZ2lzdHJhdGlvbiAqcmVnO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaCBiL2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuaFxuaW5kZXggZTI0NTc3MTEzNDMxNzMuLmRhOGEzNjk1NTZlZDExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL2RwbGxfY29yZS5oXG4rKysgYi9kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmhcbkBAIC05Myw2ICs5Myw3IEBAIHZvaWQgKmRwbGxfcGluX29uX3Bpbl9wcml2KHN0cnVjdCBkcGxsX3BpbiAqcGFyZW50LCBzdHJ1Y3QgZHBsbF9waW4gKnBpbik7XG4gXG4gY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlX29wcyAqZHBsbF9kZXZpY2Vfb3BzKHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCk7XG4gc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsX2RldmljZV9nZXRfYnlfaWQoaW50IGlkKTtcbitzdHJ1Y3QgZHBsbF9waW5fcmVmICpkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3Qoc3RydWN0IGRwbGxfcGluICpwaW4pO1xuIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgKmRwbGxfcGluX29wcyhzdHJ1Y3QgZHBsbF9waW5fcmVmICpyZWYpO1xuIHN0cnVjdCBkcGxsX3Bpbl9yZWYgKmRwbGxfeGFfcmVmX2RwbGxfZmlyc3Qoc3RydWN0IHhhcnJheSAqeGFfcmVmcyk7XG4gZXh0ZXJuIHN0cnVjdCB4YXJyYXkgZHBsbF9kZXZpY2VfeGE7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jIGIvZHJpdmVycy9kcGxsL2RwbGxfbmV0bGluay5jXG5pbmRleCBiZjcyOWNkZTc5NmE3Ny4uYjNmMGNiN2QzZDM0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvZHBsbF9uZXRsaW5rLmNcbisrKyBiL2RyaXZlcnMvZHBsbC9kcGxsX25ldGxpbmsuY1xuQEAgLTY5Niw3ICs2OTYsOSBAQCBkcGxsX2NtZF9waW5fZ2V0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdHN0cnVjdCBkcGxsX3Bpbl9yZWYgKnJlZjtcbiBcdGludCByZXQ7XG4gXG4tXHRyZWYgPSBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0KFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMpO1xuK1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4rXHRpZiAoIXJlZilcbitcdFx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbiBcdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xuIFxuIFx0cmV0ID0gZHBsbF9tc2dfYWRkX3Bpbl9oYW5kbGUobXNnLCBwaW4pO1xuQEAgLTEwODcsMTIgKzEwODksMTkgQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4tXHRcdGlmICghb3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQgfHwgIW9wcy1cdTAwM2VmcmVxdWVuY3lfZ2V0KSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcImZyZXF1ZW5jeSBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXCIpO1xuK1x0XHRpZiAoKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldCB8fCAhb3BzLVx1MDAzZWZyZXF1ZW5jeV9nZXQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlbW9kdWxlID09IHBpbi1cdTAwM2Vtb2R1bGUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2VjbG9ja19pZCA9PSBwaW4tXHUwMDNlY2xvY2tfaWQpIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4rXHRcdFx0XHQgICAgICAgXCJmcmVxdWVuY3kgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVwiKTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdH1cbi1cdHJlZiA9IGRwbGxfeGFfcmVmX2RwbGxfZmlyc3QoXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcyk7XG4rXHRyZWYgPSBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3QocGluKTtcbitcdGlmICghcmVmKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJwaW4gb3duZXIgZHBsbCBub3QgZm91bmRcIik7XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuIFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4gXHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRyZXQgPSBvcHMtXHUwMDNlZnJlcXVlbmN5X2dldChwaW4sIGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pLCBkcGxsLFxuQEAgLTExMDYsNiArMTExNSw4IEBAIGRwbGxfcGluX2ZyZXFfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdCBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIGZyZXEsIGV4dGFjayk7XG5AQCAtMTEyNSw2ICsxMTM2LDggQEAgZHBsbF9waW5fZnJlcV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlZnJlcXVlbmN5X3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZWZyZXF1ZW5jeV9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdCAgICAgICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9mcmVxLCBleHRhY2spKVxuQEAgLTExNDgsMTMgKzExNjEsMTkgQEAgZHBsbF9waW5fZXN5bmNfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICphLFxuIFxuIFx0eGFfZm9yX2VhY2goXHUwMDI2cGluLVx1MDAzZWRwbGxfcmVmcywgaSwgcmVmKSB7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuLVx0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQgfHwgIW9wcy1cdTAwM2Vlc3luY19nZXQpIHtcbitcdFx0aWYgKCghb3BzLVx1MDAzZWVzeW5jX3NldCB8fCAhb3BzLVx1MDAzZWVzeW5jX2dldCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICByZWYtXHUwMDNlZHBsbC1cdTAwM2Vtb2R1bGUgPT0gcGluLVx1MDAzZW1vZHVsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZWNsb2NrX2lkID09IHBpbi1cdTAwM2VjbG9ja19pZCkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImVtYmVkZGVkIHN5bmMgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlXCIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbitcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xuK1x0aWYgKCFyZWYpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBpbiBvd25lciBkcGxsIG5vdCBmb3VuZFwiKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4gXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiBcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdHJldCA9IG9wcy1cdTAwM2Vlc3luY19nZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSwgZHBsbCxcbkBAIC0xMTc4LDYgKzExOTcsOCBAQCBkcGxsX3Bpbl9lc3luY19zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sIHN0cnVjdCBubGF0dHIgKmEsXG4gXHRcdHZvaWQgKnBpbl9kcGxsX3ByaXY7XG4gXG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlZXN5bmNfc2V0KHBpbiwgcGluX2RwbGxfcHJpdiwgZHBsbCwgZHBsbF9wcml2KGRwbGwpLFxuQEAgLTEyMDEsNiArMTIyMiw4IEBAIGRwbGxfcGluX2VzeW5jX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqYSxcbiBcdFx0aWYgKHJlZiA9PSBmYWlsZWQpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuK1x0XHRpZiAoIW9wcy1cdTAwM2Vlc3luY19zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cGluX2RwbGxfcHJpdiA9IGRwbGxfcGluX29uX2RwbGxfcHJpdihkcGxsLCBwaW4pO1xuIFx0XHRpZiAob3BzLVx1MDAzZWVzeW5jX3NldChwaW4sIHBpbl9kcGxsX3ByaXYsIGRwbGwsIGRwbGxfcHJpdihkcGxsKSxcbkBAIC0xMjM1LDggKzEyNTgsMTEgQEAgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLFxuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwicmVmZXJlbmNlIHN5bmMgcGluIG5vdCBhdmFpbGFibGVcIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbi1cdEFTU0VSVF9OT1RfTlVMTChyZWYpO1xuK1x0cmVmID0gZHBsbF9waW5fb3duX2RwbGxfcmVmX2ZpcnN0KHBpbik7XG4rXHRpZiAoIXJlZikge1xuK1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwicGluIG93bmVyIGRwbGwgbm90IGZvdW5kXCIpO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbiBcdG9wcyA9IGRwbGxfcGluX29wcyhyZWYpO1xuIFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0IHx8ICFvcHMtXHUwMDNlcmVmX3N5bmNfZ2V0KSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJyZWZlcmVuY2Ugc3luYyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGluXCIpO1xuQEAgLTEyNTUsNiArMTI4MSw4IEBAIGRwbGxfcGluX3JlZl9zeW5jX3N0YXRlX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbixcbiBcdFx0cmV0dXJuIDA7XG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4rXHRcdGlmICghb3BzLVx1MDAzZXJlZl9zeW5jX3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRyZXQgPSBvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHRcdHJlZl9zeW5jX3BpbixcbkBAIC0xMjc3LDYgKzEzMDUsOCBAQCBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXQoc3RydWN0IGRwbGxfcGluICpwaW4sXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRkcGxsID0gcmVmLVx1MDAzZWRwbGw7XG4gXHRcdGlmIChvcHMtXHUwMDNlcmVmX3N5bmNfc2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG4gXHRcdFx0XHQgICAgICByZWZfc3luY19waW4sXG5AQCAtMTQ2OCwxMiArMTQ5OCwxOCBAQCBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0KHN0cnVjdCBkcGxsX3BpbiAqcGluLCBzdHJ1Y3QgbmxhdHRyICpwaGFzZV9hZGpfYXR0cixcbiBcbiBcdHhhX2Zvcl9lYWNoKFx1MDAyNnBpbi1cdTAwM2VkcGxsX3JlZnMsIGksIHJlZikge1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbi1cdFx0aWYgKCFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldCB8fCAhb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9nZXQpIHtcbitcdFx0aWYgKCghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQgfHwgIW9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHJlZi1cdTAwM2VkcGxsLVx1MDAzZW1vZHVsZSA9PSBwaW4tXHUwMDNlbW9kdWxlIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVmLVx1MDAzZWRwbGwtXHUwMDNlY2xvY2tfaWQgPT0gcGluLVx1MDAzZWNsb2NrX2lkKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBoYXNlIGFkanVzdCBub3Qgc3VwcG9ydGVkXCIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0fVxuLVx0cmVmID0gZHBsbF94YV9yZWZfZHBsbF9maXJzdChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzKTtcbitcdHJlZiA9IGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdChwaW4pO1xuK1x0aWYgKCFyZWYpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcInBpbiBvd25lciBkcGxsIG5vdCBmb3VuZFwiKTtcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4gXHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbiBcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdHJldCA9IG9wcy1cdTAwM2VwaGFzZV9hZGp1c3RfZ2V0KHBpbiwgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG5AQCAtMTQ4OCw2ICsxNTI0LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXG4gXHR4YV9mb3JfZWFjaChcdTAwMjZwaW4tXHUwMDNlZHBsbF9yZWZzLCBpLCByZWYpIHtcbiBcdFx0b3BzID0gZHBsbF9waW5fb3BzKHJlZik7XG4rXHRcdGlmICghb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdGRwbGwgPSByZWYtXHUwMDNlZHBsbDtcbiBcdFx0cmV0ID0gb3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLFxuIFx0XHRcdFx0XHQgICAgZHBsbF9waW5fb25fZHBsbF9wcml2KGRwbGwsIHBpbiksXG5AQCAtMTUxMCw2ICsxNTQ4LDggQEAgZHBsbF9waW5fcGhhc2VfYWRqX3NldChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgc3RydWN0IG5sYXR0ciAqcGhhc2VfYWRqX2F0dHIsXG4gXHRcdGlmIChyZWYgPT0gZmFpbGVkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRvcHMgPSBkcGxsX3Bpbl9vcHMocmVmKTtcbitcdFx0aWYgKCFvcHMtXHUwMDNlcGhhc2VfYWRqdXN0X3NldClcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0ZHBsbCA9IHJlZi1cdTAwM2VkcGxsO1xuIFx0XHRpZiAob3BzLVx1MDAzZXBoYXNlX2FkanVzdF9zZXQocGluLCBkcGxsX3Bpbl9vbl9kcGxsX3ByaXYoZHBsbCwgcGluKSxcbiBcdFx0XHRcdFx0ICBkcGxsLCBkcGxsX3ByaXYoZHBsbCksIG9sZF9waGFzZV9hZGosXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzowOC43OTY4MTc0OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTMzNDUzNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRQTEwgU3Vic3lzdGVtIFBhdGNoIEFuYWx5c2lzIFx1MDAyNiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRvdWNoaW5nIHRoZSBEUExMIGNvcmUg4oCTIHNwZWNpZmljYWxseSBgZHBsbF9jb3JlLmNgLCBgZHBsbF9jb3JlLmhgLCBhbmQgYGRwbGxfbmV0bGluay5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3QgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIG5ldyBmdW5jdGlvbiwgYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHVycG9zZSBpcyB0byBwcm92aWRlIGEgbW9yZSBzcGVjaWZpYyB3YXkgdG8gZmluZCB0aGUgaW5pdGlhbCBEUExMIHJlZmVyZW5jZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHBpbi5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGNhbGxzIHRvIGBkcGxsX3hhX3JlZl9kcGxsX2ZpcnN0YCB3aXRoIHRoaXMgbmV3IGZ1bmN0aW9uIHdpdGhpbiBhIGJ1bmNoIG9mIGNyaXRpY2FsIERQTEwgb3BlcmF0aW9uczogYGRwbGxfY21kX3Bpbl9nZXRfb25lYCwgYGRwbGxfcGluX2ZyZXFfc2V0YCwgYGRwbGxfcGluX2VzeW5jX3NldGAsIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgLCBhbmQgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgZWl0aGVyIGNsYXJpdHkgb3IgY29ycmVjdG5lc3Mgd2l0aGluIHRoZSBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcgdXNlZCBmb3IgdGhlIERQTEwgc3Vic3lzdGVtLiBBZGRpdGlvbmFsbHksIEkgc2VlIHRoZXkncmUgYWRkaW5nIGluIGNoZWNrcyB0byBzZWUgaWYgYG9wcy1cdTAwM2VmcmVxdWVuY3lfc2V0YCBldGMgYXJlIHZhbGlkIHRvIHByZXZlbnQgY3Jhc2hlcyDigJMgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGJ1dCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gZnV6emluZy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBEUExMIHN5c3RlbSwgd2hpY2ggd2Uga25vdyBpcyBleHBvc2VkIHZpYSBuZXRsaW5rLiBHaXZlbiB0aGlzIHRvdWNoIG9uIGNvcmUgZnVuY3Rpb25hbGl0eSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKmZ1enppbmcqLiBXZSBuZWVkIHRvIHRob3JvdWdobHkgdGVzdCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgbmV0bGluay1hY2Nlc3NpYmxlLiBBbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGNvdWxkIGJlIGV4cGxvaXRlZCByZW1vdGVseS5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBEUExMLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCB0byBodW50IGRvd24gdGhlIHJlbGV2YW50IGBDT05GSUdfRFBMTGAgc2V0dGluZ3MuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBEUExMIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCwgdGhlcmVmb3JlLCBob3cgaXQgY2FuIGJlIHRhcmdldGVkIGJ5IGZ1enppbmcuIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCBhbmQgd2hpY2ggb25lcyBhcmUgZGlzYWJsZWQsIHNvIEkgY2FuIGVuc3VyZSBhIGZ1bGwgY292ZXJhZ2Ugb2YgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6NDM6MTQuMzMwMjczODc5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDk0NDgxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERQTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC9LY29uZmlnPTY9bWVudSBcXFwiRFBMTCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy03LVxcbmRyaXZlcnMvZHBsbC9LY29uZmlnOjg6Y29uZmlnIERQTExcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy05LVxcdGJvb2xcXG5kcml2ZXJzL2RwbGwvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL2RwbGwvS2NvbmZpZzoxMTpjb25maWcgRFBMTF9SRUZDTlRfVFJBQ0tFUlxcbmRyaXZlcnMvZHBsbC9LY29uZmlnLTEyLVxcdGJvb2wgXFxcIkRQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzoxOS42Mzk3Mjc0ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTcwNDU1ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfRFBMTGAgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBgQ09ORklHX0RQTExgIGlzIGEgYm9vbGVhbiwgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aG8ncyAqdXNpbmcqIHRoaXM/IEl04oCZcyB1c3VhbGx5IHNlbGVjdGVkIGJ5IGRyaXZlcnMuIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoaWNoIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBDT05GSUdfRFBMTGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgaGVyZSB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGhlbHBzIG1lIG5hcnJvdyBkb3duIHdoZXJlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBwcm9ibGVtcyBvciBvcHRpbWl6YXRpb25zLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgaXQsIG9mIGNvdXJzZS4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjIyLjYxMDE4NTU3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDc5MzE0NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBEUExMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNS1cXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NjpcXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA1LVxcdHNlbGVjdCBQTERNRldcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjMwNjpcXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIwMz1jb25maWcgTUxYNV9EUExMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDUtXFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFxcdTAwMjZcXHUwMDI2IEVUSEVSTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyMDY6XFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yMDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTktXFx0c2VsZWN0IENSQzE2XFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMjA6XFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjI2LjY4OTUwNjI0OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODg5NTg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFBMTCBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBEUExMIHN1YnN5c3RlbSBpcyBiZWluZyBicm91Z2h0IGluIGJ5IGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzOiBgSUNFYCwgYE1MWDVfRFBMTGAsIGBQVFBfMTU4OF9DTE9DS19PQ1BgLCBhbmQgYFpMMzA3M1hgLiBNYWtlcyBzZW5zZSwgaXQncyBhIGZ1bmRhbWVudGFsIGNsb2NraW5nIGVsZW1lbnQuIFRoZSBjb2RlJ3MgbWFraW5nIGl0IGNsZWFyIHRoYXQgYERQTExgIGlzIGEgY29yZSBzdWJzeXN0ZW0gYW5kLCBzaW5jZSBpdCdzIGRlZmluZWQgYXMgYSBib29sZWFuIHdpdGhvdXQgYSBwcm9tcHQsIHRoZSBvbmx5IHdheSBpdCBnZXRzIGVuYWJsZWQgaXMgdGhyb3VnaCBhIHNlbGVjdGlvbi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgdGhlb3JldGljYWxseS4gSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9kcGxsL0tjb25maWdgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBiZXR0ZXIuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBzZWxlY3Rpb24gd29ya3MsIGFyZSB0aGVyZSBmdXJ0aGVyIGRlcGVuZGVuY2llcz8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIHNjaGVtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjMwLjE3ODQ2ODE2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZHBsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEdlbmVyaWMgRFBMTCBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiRFBMTCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0Y29uZmlnIERQTExcXG4gICA5OlxcdFxcdGJvb2xcXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIERQTExfUkVGQ05UX1RSQUNLRVJcXG4gIDEyOlxcdFxcdGJvb2wgXFxcIkRQTEwgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nXFxcIlxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXFx1MDAyNlxcdTAwMjYgU1RBQ0tUUkFDRV9TVVBQT1JUIFxcdTAwMjZcXHUwMDI2IERQTExcXG4gIDE0OlxcdFxcdHNlbGVjdCBSRUZfVFJBQ0tFUlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBFbmFibGUgcmVmZXJlbmNlIGNvdW50IHRyYWNraW5nIGZvciBEUExMIGRldmljZXMgYW5kIHBpbnMuXFxuICAxNzpcXHRcXHQgIFRoaXMgaGVscHMgZGVidWdnaW5nIHJlZmVyZW5jZSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVnc1xcbiAgMTg6XFx0XFx0ICBieSByZWNvcmRpbmcgc3RhY2sgdHJhY2VzIGZvciBlYWNoIGdldC9wdXQgb3BlcmF0aW9uLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIFRoZSB0cmFja2luZyBpbmZvcm1hdGlvbiBpcyBleHBvc2VkIHZpYSBkZWJ1Z2ZzIGF0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzozMC4xNzg1NjkzNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTc0OTY5NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRQTEwgQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGNvbmZpZ3VyZSBEUExMIGZvciBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgYm9vbGVhbiBvcHRpb24gYW5kIGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQsIEkgY2FuJ3QganVzdCBlbmFibGUgaXQgdGhyb3VnaCBgbWFrZSBkZWZjb25maWdgIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVpdGhlciBsaXN0IGBEUExMYCBpbiB0aGUgY29uZmlnIGFuZCBob3BlIFN5emthbGxlcidzIHN5c3RlbSBmaWd1cmVzIGl0IG91dCwgb3IgdG8gZXhwbGljaXRseSBsaXN0IGEgZHJpdmVyIHRoYXQgc2VsZWN0cyBpdC4gSXQncyB1c3VhbGx5IHNhZmVyIHRvIGJlIGV4cGxpY2l0LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBhcHByb2FjaC4gQmVjYXVzZSBpdCdzIGEgYm9vbCwgaXQncyBwb3NzaWJsZSBTeXprYWxsZXIncyBjb25maWcgc3lzdGVtIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIGl0IGlmIGl0J3Mgc2VsZWN0ZWQgYnkgc29tZXRoaW5nIGVsc2UuIEJ1dCBJIHN0aWxsIHdhbnQgdG8gYmUgcHJlY2lzZS4gSSdtIGdvaW5nIHRvIGxpc3QgYSBkcml2ZXIga25vd24gdG8gc2VsZWN0IGl0LCBsaWtlIGBaTDMwNzNYYCBvciBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCwgb3IgYERQTExgIGRpcmVjdGx5IGFzIGl0J3MgdGhlIGNvcmUgc3Vic3lzdGVtLlxuXG5UbyBoZWxwIHdpdGggdGhpcywgSSdtIGNoZWNraW5nIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgcmVsYXRlZCB0byBEUExMLCB0byBzZWUgd2hhdCB0aGV5IGZvY3VzIG9uOlxuKiAgIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgXG4qICAgYGRwbGxfY21kX3Bpbl9nZXRfb25lYFxuKiAgIGBkcGxsX3Bpbl9mcmVxX3NldGBcbiogICBgZHBsbF9waW5fZXN5bmNfc2V0YFxuKiAgIGBkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRgXG4qICAgYGRwbGxfcGluX3BoYXNlX2Fkal9zZXRgXG5cblRoZXNlIHNlZW0gdG8gYmUgcmVsYXRlZCB0byBuZXRsaW5rIGhhbmRsZXJzIG9yIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2Ygd2hhdCdzIGJlZW4gcmVjZW50bHkgYWN0aXZlLiBJJ2xsIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgd2hlbiB0ZXN0aW5nOlxuKiAgIGBkcGxsX2NtZF9waW5fZ2V0X29uZWBcbiogICBgZHBsbF9waW5fZnJlcV9zZXRgXG4qICAgYGRwbGxfcGluX2VzeW5jX3NldGBcbiogICBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YFxuKiAgIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YFxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBEUExMYCAqY2FuKiBiZSBkaXJlY3RseSBlbmFibGVkLiBBbHRob3VnaCBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyBib29sZWFuIG9wdGlvbnMgd2l0aG91dCBkaXJlY3QgcHJvbXB0cywgZXhwbGljaXRseSBzZWxlY3RpbmcgYSBkcml2ZXIgaXMgY2xlYW5lciBhbmQgbW9yZSByZWxpYWJsZS4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIGBaTDMwNzNYYCwgaW4gYGRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWdgLiBJJ2xsIGNvbmZpcm0gdGhhdCdzIGEgdmFsaWQgd2F5IHRvIGVuYWJsZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjM3LjE1MzU0MTU5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRjb25maWcgWkwzMDczWFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBBenVyaXRlIERQTEwvUFRQL1N5bmNFIGRldmljZXNcXFwiIGlmIENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdHNlbGVjdCBEUExMXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIEF6dXJpdGUgZmFtaWx5IERQTEwvUFRQL1N5bmNFXFxuICAxMTpcXHRcXHQgIGRldmljZXMgdGhhdCBzdXBwb3J0IHVwIHRvIDUgaW5kZXBlbmRlbnQgRFBMTCBjaGFubmVscyxcXG4gIDEyOlxcdFxcdCAgMTAgaW5wdXQgcGlucyBhbmQgdXAgdG8gMjAgb3V0cHV0IHBpbnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMTU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB6bDMwNzN4LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgWkwzMDczWF9JMkNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNaWNyb2NoaXAgQXp1cml0ZSBkZXZpY2VzXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX0kyQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0MzozNy4xNTM4MTk3OTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1NjY3Nzg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipBbmFseXppbmcgdGhlIFpMMzA3M1ggRGVjbGFyYXRpb24qKlxuXG5Pa2F5LCBzbyBgWkwzMDczWGAgaXMgZGVmaW5lZCBhcyBhIHRyaXN0YXRlIGZvciB0aGUgXCJNaWNyb2NoaXAgQXp1cml0ZSBEUExML1BUUC9TeW5jRSBkZXZpY2VzLlwiIFRoYXQncyBnb29kIHRvIGtub3csIHNwZWNpZmljLCBhbmQgcmVsZXZhbnQsIEknbSBhbHJlYWR5IGF3YXJlIG9mIHRoaXMgdGVjaG5vbG9neS4gQnV0LCBhbmQgaGVyZSdzIHRoZSBraWNrZXIsICppdCdzIG9ubHkgYWN0dWFsbHkgdmlzaWJsZSBpZiogYENPTVBJTEVfVEVTVGAgKmlzIGRlZmluZWQqLiBSaWdodCwgZ290IGl0LiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBzcGVjaWZpYyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIG5vIHN1cnByaXNlcyB0aGVyZS4gTGV0J3Mgc2VlLi4uIHdoYXQgYWJvdXQgYFBUUF8xNTg4X0NMT0NLX09DUGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYFpMMzA3M1hgIGFuZCB3aGV0aGVyIHRoaXMgYENPTVBJTEVfVEVTVGAgZGVwZW5kZW5jeSBhbHNvIGFwcGxpZXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhcm91bmQgdGhlc2UgZGVmaW5pdGlvbnMuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjQwLjkxMDUwMDc3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbiAyMTE6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG4gMjEyOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gMjEzOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAyMTQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTVREXFxuIDIxNTpcXHRcXHRkZXBlbmRzIG9uIFNFUklBTF84MjUwXFxuIDIxNjpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuIDIxNzpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gMjE4OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAyMTk6XFx0XFx0c2VsZWN0IENSQzE2XFxuIDIyMDpcXHRcXHRzZWxlY3QgRFBMTFxcbiAyMjE6XFx0XFx0aGVscFxcbiAyMjI6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIGFuIE9wZW5Db21wdXRlIHRpbWUgY2FyZC5cXG4gMjIzOlxcdFxcbiAyMjQ6XFx0XFx0ICBUaGUgT3BlbkNvbXB1dGUgdGltZSBjYXJkIGlzIGFuIGF0b21pYyBjbG9jayBhbG9uZyB3aXRoXFxuIDIyNTpcXHRcXHQgIGEgR1BTIHJlY2VpdmVyIHRoYXQgcHJvdmlkZXMgYSBHcmFuZG1hc3RlciBjbG9jayBzb3VyY2VcXG4gMjI2OlxcdFxcdCAgZm9yIGEgUFRQIGVuYWJsZWQgbmV0d29yay5cXG4gMjI3OlxcdFxcbiAyMjg6XFx0XFx0ICBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnRpbWluZ2NhcmQuY29tL1xcbiAyMjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjQwLjkxMDY1NzY3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5MDE5NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDbG9jayBhbmQgUExMIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gSSdtIHNlZWluZyBgUFRQXzE1ODhfQ0xPQ0tfT0NQYCBvdXQgdGhlcmUuIFRoYXQncyBnb29kLCBhIGtub3duIGZhY3Rvci4gTm93IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sIFwiT2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGBNTFg1X0RQTExgPyBXaGVyZSBpcyB0aGF0IGluIHRoZSBwaWN0dXJlP1wiIFdlJ3JlIGRlYWxpbmcgd2l0aCBjbG9ja2luZyBhbmQgUExMcywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gY29tcG9uZW50cywgYW5kIHRoZWlyIG92ZXJhbGwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbm5lY3Rpb24gdG8gbWFrZSB0byBlbnN1cmUgdGltaW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXJlIHdvcmtpbmcgY29ycmVjdGx5LCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGl0J3Mgc3RhdHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzY5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0Mzo0NC4wODk2ODA0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAzLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAzOlxcdGNvbmZpZyBNTFg1X0RQTExcXG4gMjA0OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIERQTEwgc3VwcG9ydFxcXCJcXG4gMjA1OlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuIDIwNjpcXHRcXHRzZWxlY3QgRFBMTFxcbiAyMDc6XFx0XFx0aGVscFxcbiAyMDg6XFx0XFx0ICBEUExMIHN1cHBvcnQgaW4gTWVsbGFub3ggVGVjaG5vbG9naWVzIENvbm5lY3RYIE5JQ3MuXFxuIDIwOTpcXHRcXG4gMjEwOlxcdGNvbmZpZyBNTFg1X0VOX1BTUFxcbiAyMTE6XFx0XFx0Ym9vbCBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIHN1cHBvcnQgZm9yIFBTUCBjcnlwdG9ncmFwaHktb2ZmbG9hZCBhY2NlbGVyYXRpb25cXFwiXFxuIDIxMjpcXHRcXHRkZXBlbmRzIG9uIElORVRfUFNQXFxuIDIxMzpcXHRcXHRkZXBlbmRzIG9uIE1MWDVfQ09SRV9FTlxcbiAyMTQ6XFx0XFx0ZGVmYXVsdCB5XFxuIDIxNTpcXHRcXHRoZWxwXFxuIDIxNjpcXHRcXHQgIG1seDUgZGV2aWNlIG9mZmxvYWQgc3VwcG9ydCBmb3IgR29vZ2xlIFBTUCBTZWN1cml0eSBQcm90b2NvbCBvZmZsb2FkLlxcbiAyMTc6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIFBTUCBlbmNyeXB0aW9uIG9mZmxvYWQgYW5kIGZvciBTUEkgYW5kIGtleSBnZW5lcmF0aW9uXFxuIDIxODpcXHRcXHQgIGludGVyZmFjZXMgdG8gUFNQIFN0YWNrIHdoaWNoIHN1cHBvcnRzIFBTUCBjcnlwdG8gb2ZmbG9hZC5cXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDo0Mzo0NC4wODk4MDc1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzIxMjk3OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIERQTEwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBNTFg1X0RQTExgIGlzIGFsc28gaW4gdGhlIG1peC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIERQTEwgZnVuY3Rpb25hbGl0eSBpcyBwcm9wZXJseSBjb25maWd1cmVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYWRkIGBEUExMYCB0byBFbmFibGVDb25maWdzLCBhbmQgcHJvYmFibHkgYWxzbyBgTUxYNV9EUExMYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09DUGAganVzdCB0byBiZSBzYWZlIGFuZCBlbnN1cmUgdGhlIHJlbGV2YW50IHBhcnRzIGFyZSBzZWxlY3RlZC5cblxuTGV0IG1lIHZlcmlmeSB0aGUgbG9naWMgaGVyZS4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgRFBMTCBuZXRsaW5rIGhhbmRsZXJzIHdvcmssIHVzaW5nIGBkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RgIHRvIGZpbmQgdGhlIG93bmluZyBEUExMIHJlZmVyZW5jZSBmb3IgYSBwaW4uIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBjcnVjaWFsIGNoZWNrcyB0byBwcmV2ZW50IGNyYXNoZXMgb3IgZmFpbHVyZXMgd2hlbiBjZXJ0YWluIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWNyb3NzIGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9mIHRoZSBEUExMIHN1YnN5c3RlbSwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXItc3BhY2UuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgaW52b2x2ZWQuIEknbSBzZWVpbmc6IGBkcGxsX2NtZF9waW5fZ2V0X29uZWAsIGBkcGxsX3Bpbl9mcmVxX3NldGAsIGBkcGxsX3Bpbl9lc3luY19zZXRgLCBgZHBsbF9waW5fcmVmX3N5bmNfc3RhdGVfc2V0YCwgYW5kIGBkcGxsX3Bpbl9waGFzZV9hZGpfc2V0YC4gVGhlc2UgYXJlIGFsbCBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgb3IgdXRpbGl0eSBmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhvc2UgaGFuZGxlcnMuIEknbSBwcmV0dHkgc3VyZSB0aGVzZSBhcmVuJ3QgaG90LXBhdGggZnVuY3Rpb25zLCBzbyBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgbGlrZWx5IG1pbmltYWwsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBrZWVwaW5nIGluIG1pbmQuXG5cbkknbSB3b25kZXJpbmcgaWYgc3BlY2lmeWluZyBqdXN0IGBEUExMYCB3aWxsIHdvcmsgYXMgaXMuIFN5emthbGxlcidzIGNvbmZpZyBzeXN0ZW0gbWlnaHQganVzdCBlbmFibGUgaXQsIGJ1dCBzaW5jZSBpdCdzIGEgc2ltcGxlIGJvb2xlYW4gd2l0aG91dCBhIHByb21wdCwgaXQncyBzYWZlciB0byBzcGVjaWZ5IGEgZGVwZW5kZW5jeSBsaWtlIGBNTFg1X0RQTExgIG9yIGBQVFBfMTU4OF9DTE9DS19PQ1BgLCBvciBgSUNFYC4gSSdsbCBqdXN0IGJlIGV4cGxpY2l0IGFuZCBhZGQgYWxsIG9mIHRob3NlIHRvIG15IGNvbmZpZ3VyYXRpb246IGBEUExMYCwgYE1MWDVfRFBMTGAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT0NQYC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgb24gYGRwbGxfcGluX293bl9kcGxsX3JlZl9maXJzdGAgc2luY2UgaXQncyBhIG5ldyBmdW5jdGlvbi4gSSdsbCBhZGQgdGhhdCB0byBGb2N1c1N5bWJvbHMsIHRvby5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODgxLCJPdXRwdXRUb2tlbnMiOjE5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjQzOjUxLjgxMTEwOTcyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTE5NjcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFBMTFwiLFxuICAgIFwiTUxYNV9EUExMXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19PQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcGxsX3Bpbl9vd25fZHBsbF9yZWZfZmlyc3RcIixcbiAgICBcImRwbGxfY21kX3Bpbl9nZXRfb25lXCIsXG4gICAgXCJkcGxsX3Bpbl9mcmVxX3NldFwiLFxuICAgIFwiZHBsbF9waW5fZXN5bmNfc2V0XCIsXG4gICAgXCJkcGxsX3Bpbl9yZWZfc3luY19zdGF0ZV9zZXRcIixcbiAgICBcImRwbGxfcGluX3BoYXNlX2Fkal9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFBMTCBzdWJzeXN0ZW0ncyBuZXRsaW5rIGludGVyZmFjZSB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIG93bmVyIERQTEwgcmVmZXJlbmNlIG9mIGEgcGluIGFuZCBhZGRzIGNoZWNrcyB0byBwcmV2ZW50IGZhaWx1cmVzIHdoZW4gY2VydGFpbiBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCByZWZlcmVuY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChuZXRsaW5rIGludGVyZmFjZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7c2zt[1] Phase: Succeeded StartedAt: 2026-07-14 20:44:15 +0000 UTC FinishedAt: 2026-07-14 20:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 20:44:15 +0000 UTC FinishedAt: 2026-07-14 20:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2] Phase: Succeeded StartedAt: 2026-07-14 20:44:15 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 20:44:15 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 20:44:16 +0000 UTC FinishedAt: 2026-07-14 20:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 20:44:16 +0000 UTC FinishedAt: 2026-07-14 20:44:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflow7c2zt/series-workflow7c2zt-convert-artifact-3988833651/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 20:44:54 +0000 UTC FinishedAt: 2026-07-14 21:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 20:44:54 +0000 UTC FinishedAt: 2026-07-14 21:17:10 +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:*35a22035-3bd0-407b-9739-ec8addeed722,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-workflow7c2zt/series-workflow7c2zt-convert-artifact-3988833651/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": "3282bd8b-a59b-4b4e-b7de-a4846c3a37c7", "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-workflow7c2zt/series-workflow7c2zt-build-action-609953825/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 20:44:54 +0000 UTC FinishedAt: 2026-07-14 21:17:00 +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:*35a22035-3bd0-407b-9739-ec8addeed722,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-workflow7c2zt/series-workflow7c2zt-convert-artifact-3988833651/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": "3282bd8b-a59b-4b4e-b7de-a4846c3a37c7", "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-workflow7c2zt/series-workflow7c2zt-build-action-609953825/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 21:17:10 +0000 UTC FinishedAt: 2026-07-14 21:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 21:17:10 +0000 UTC FinishedAt: 2026-07-14 21:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 21:17:10 +0000 UTC FinishedAt: 2026-07-14 21:19:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 21:17:10 +0000 UTC FinishedAt: 2026-07-14 21:17:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflow7c2zt/series-workflow7c2zt-convert-artifact-232314474/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 21:19:16 +0000 UTC FinishedAt: 2026-07-14 21:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 21:19:16 +0000 UTC FinishedAt: 2026-07-14 21:21:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3282bd8b-a59b-4b4e-b7de-a4846c3a37c7,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-workflow7c2zt/series-workflow7c2zt-build-action-609953825/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-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 21:21:27 +0000 UTC FinishedAt: 2026-07-14 21:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 21:21:27 +0000 UTC FinishedAt: 2026-07-14 21:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 21:21:27 +0000 UTC FinishedAt: 2026-07-14 22:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 21:21:27 +0000 UTC FinishedAt: 2026-07-14 22:02:27 +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:*35a22035-3bd0-407b-9739-ec8addeed722,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-workflow7c2zt/series-workflow7c2zt-convert-artifact-232314474/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": "dbdf080b-cef8-4968-a737-4584e0f6ce8f", "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-workflow7c2zt/series-workflow7c2zt-build-action-2153841294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 21:21:27 +0000 UTC FinishedAt: 2026-07-14 22:02:02 +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:*35a22035-3bd0-407b-9739-ec8addeed722,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-workflow7c2zt/series-workflow7c2zt-convert-artifact-232314474/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": "dbdf080b-cef8-4968-a737-4584e0f6ce8f", "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-workflow7c2zt/series-workflow7c2zt-build-action-2153841294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 22:02:27 +0000 UTC FinishedAt: 2026-07-14 22:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 22:02:27 +0000 UTC FinishedAt: 2026-07-14 22:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 22:02:27 +0000 UTC FinishedAt: 2026-07-14 22:04:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 22:02:27 +0000 UTC FinishedAt: 2026-07-14 22:04:30 +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:*dbdf080b-cef8-4968-a737-4584e0f6ce8f,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-workflow7c2zt/series-workflow7c2zt-build-action-2153841294/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-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"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:*3282bd8b-a59b-4b4e-b7de-a4846c3a37c7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbdf080b-cef8-4968-a737-4584e0f6ce8f,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-workflow7c2zt/series-workflow7c2zt-build-action-609953825/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-workflow7c2zt/series-workflow7c2zt-build-action-2153841294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-14 22:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-14 22:04:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"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-workflow7c2zt/series-workflow7c2zt-convert-artifact-3601817087/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-14 22:04:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-14 22:04:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 22:04:41 +0000 UTC FinishedAt: 2026-07-14 22:04:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 22:04:52 +0000 UTC FinishedAt: 2026-07-15 01:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7c2zt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dpll_pin_own_dpll_ref_first","dpll_cmd_pin_get_one","dpll_pin_freq_set","dpll_pin_esync_set","dpll_pin_ref_sync_state_set","dpll_pin_phase_adj_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DPLL","MLX5_DPLL","PTP_1588_CLOCK_OCP"],"series_id":"5a458fdb-163d-4864-b06a-d8c0e76d6db9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 22:04:52 +0000 UTC FinishedAt: 2026-07-15 01:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3282bd8b-a59b-4b4e-b7de-a4846c3a37c7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbdf080b-cef8-4968-a737-4584e0f6ce8f,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-workflow7c2zt/series-workflow7c2zt-build-action-609953825/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-workflow7c2zt/series-workflow7c2zt-build-action-2153841294/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-workflow7c2zt/series-workflow7c2zt-convert-artifact-3601817087/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,}