Name: series-workflowpttzn Phase: Succeeded StartedAt: 2026-07-01 20:42:58 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[0] Phase: Succeeded StartedAt: 2026-07-01 20:42:58 +0000 UTC FinishedAt: 2026-07-01 20:54:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 20:42:58 +0000 UTC FinishedAt: 2026-07-01 20:54:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "I40E", "I40E_DCB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "I40E", "I40E_DCB" ], "series_id": "5354a32e-cb93-4eda-89be-a19a739deee0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "i40e_vsi_alloc_arrays", "i40e_vsi_free_arrays", "i40e_vsi_setup_vectors", "i40e_vsi_reinit_setup", "i40e_vsi_setup", "i40e_ptp_stop", "i40e_set_num_rings_in_vsi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0k0MEUmIzM0OywKICAgICYjMzQ7STQwRV9EQ0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpNDBlX3ZzaV9hbGxvY19hcnJheXMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfZnJlZV9hcnJheXMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfc2V0dXBfdmVjdG9ycyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9yZWluaXRfc2V0dXAmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfc2V0dXAmIzM0OywKICAgICYjMzQ7aTQwZV9wdHBfc3RvcCYjMzQ7LAogICAgJiMzNDtpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBWU0kgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGxvZ2ljIGluIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgaW5jbHVkaW5nIGFycmF5IGFsbG9jYXRpb24sIHZlY3RvciBzZXR1cCwgYW5kIGVycm9yIGhhbmRsaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBkcml2ZXIgY29kZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHZpcnR1YWwgUENJIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDo1Mzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjhhMjNiZDk5YmQxMjJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuQEAgLTExNDA2LDEwICYjNDM7MTE0MDYsMTQgQEAgc3RhdGljIHZvaWQgaTQwZV9zZXJ2aWNlX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktXHUwMDNlYmFjaztcbiYjNDM7XHR1MTYgcXBzO1xuIFxuIFx0c3dpdGNoICh2c2ktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBJNDBFX1ZTSV9NQUlOOlxuIFx0XHR2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgPSBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiYjNDM7XHRcdHFwcyA9IHZzaS1cdTAwM2VyZXFfcXVldWVfcGFpcnMgP1xuJiM0MztcdFx0ICAgICAgbWluKHZzaS1cdTAwM2VyZXFfcXVldWVfcGFpcnMsIHBmLVx1MDAzZW51bV9sYW5fcXBzKSA6XG4mIzQzO1x0XHQgICAgICBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiBcdFx0aWYgKCF2c2ktXHUwMDNlbnVtX3R4X2Rlc2MpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG5AQCAtMTE0MTcsNyAmIzQzOzExNDIxLDcgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFx0XHRcdHZzaS1cdTAwM2VudW1fcnhfZGVzYyA9IEFMSUdOKEk0MEVfREVGQVVMVF9OVU1fREVTQ1JJUFRPUlMsXG4gXHRcdFx0XHRcdFx0IEk0MEVfUkVRX0RFU0NSSVBUT1JfTVVMVElQTEUpO1xuIFx0XHRpZiAodGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi1cdTAwM2VmbGFncykpXG4tXHRcdFx0dnNpLVx1MDAzZW51bV9xX3ZlY3RvcnMgPSBwZi1cdTAwM2VudW1fbGFuX21zaXg7XG4mIzQzO1x0XHRcdHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzID0gY2xhbXAocXBzLCAxLCBwZi1cdTAwM2VudW1fbGFuX21zaXgpO1xuIFx0XHRlbHNlXG4gXHRcdFx0dnNpLVx1MDAzZW51bV9xX3ZlY3RvcnMgPSAxO1xuIFxuQEAgLTExNDY5LDEyICYjNDM7MTE0NzMsMTEgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIC8qKlxuICAqIGk0MGVfdnNpX2FsbG9jX2FycmF5cyAtIEFsbG9jYXRlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSB2c2lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxuICAqXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXG4gICoqL1xuLXN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuJiM0MztzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHRzdHJ1Y3QgaTQwZV9yaW5nICoqbmV4dF9yaW5ncztcbiBcdGludCBzaXplO1xuQEAgLTExNDkzLDE5ICYjNDM7MTE0OTYsMjAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpXG4gXHR9XG4gXHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBuZXh0X3JpbmdzO1xuIFxuLVx0aWYgKGFsbG9jX3F2ZWN0b3JzKSB7XG4tXHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi9cbi1cdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzO1xuLVx0XHR2c2ktXHUwMDNlcV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbi1cdFx0aWYgKCF2c2ktXHUwMDNlcV92ZWN0b3JzKSB7XG4tXHRcdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0XHRnb3RvIGVycl92ZWN0b3JzO1xuLVx0XHR9XG4mIzQzO1x0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xuJiM0MztcdHNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycztcbiYjNDM7XHR2c2ktXHUwMDNlcV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXZzaS1cdTAwM2VxX3ZlY3RvcnMpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIGVycl92ZWN0b3JzO1xuIFx0fVxuIFx0cmV0dXJuIHJldDtcbiBcbiBlcnJfdmVjdG9yczpcbiBcdGtmcmVlKHZzaS1cdTAwM2V0eF9yaW5ncyk7XG4mIzQzO1x0dnNpLVx1MDAzZXR4X3JpbmdzID0gTlVMTDtcbiYjNDM7XHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xuJiM0MztcdHZzaS1cdTAwM2V4ZHBfcmluZ3MgPSBOVUxMO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMTE1NzgsNyAmIzQzOzExNTgyLDcgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7XG4mIzQzO1x0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGVycl9yaW5ncztcbiBcbkBAIC0xMTYwMywxOCAmIzQzOzExNjA3LDE1IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfbWVtX2FsbG9jKHN0cnVjdCBpNDBlX3BmICpwZiwgZW51bSBpNDBlX3ZzaV90eXBlIHR5cGUpXG4gLyoqXG4gICogaTQwZV92c2lfZnJlZV9hcnJheXMgLSBGcmVlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSBWU0lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBmcmVlX3F2ZWN0b3JzOiBhIGJvb2wgdG8gc3BlY2lmeSBpZiBxX3ZlY3RvcnMgbmVlZCB0byBiZSBmcmVlZC5cbiAgKlxuICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKVxuICAqIE9uIHN1Y2Nlc3M6IHJldHVybnMgMFxuICAqKi9cbi1zdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBmcmVlX3F2ZWN0b3JzKVxuJiM0MztzdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHQvKiBmcmVlIHRoZSByaW5nIGFuZCB2ZWN0b3IgY29udGFpbmVycyAqL1xuLVx0aWYgKGZyZWVfcXZlY3RvcnMpIHtcbi1cdFx0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4tXHRcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuLVx0fVxuJiM0MztcdGtmcmVlKHZzaS1cdTAwM2VxX3ZlY3RvcnMpO1xuJiM0MztcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuIFx0a2ZyZWUodnNpLVx1MDAzZXR4X3JpbmdzKTtcbiBcdHZzaS1cdTAwM2V0eF9yaW5ncyA9IE5VTEw7XG4gXHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xuQEAgLTExNjc0LDcgJiM0MzsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZWlycV9waWxlLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IsIHZzaS1cdTAwM2VpZHgpO1xuIFxuIFx0Yml0bWFwX2ZyZWUodnNpLVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuLVx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTtcbiYjNDM7XHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xuIFx0aTQwZV9jbGVhcl9yc3NfY29uZmlnX3VzZXIodnNpKTtcbiBcbiBcdHBmLVx1MDAzZXZzaVt2c2ktXHUwMDNlaWR4XSA9IE5VTEw7XG5AQCAtMTE2OTksMTEgJiM0MzsxMTcwMCwxMyBAQCBzdGF0aWMgdm9pZCBpNDBlX3ZzaV9jbGVhcl9yaW5ncyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcbiBcdGlmICh2c2ktXHUwMDNldHhfcmluZ3MgXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1swXSkge1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0a2ZyZWVfcmN1KHZzaS1cdTAwM2V0eF9yaW5nc1tpXSwgcmN1KTtcbiYjNDM7XHRcdFx0c3RydWN0IGk0MGVfcmluZyAqdHhfcmluZyA9IHZzaS1cdTAwM2V0eF9yaW5nc1tpXTtcbiYjNDM7XG4gXHRcdFx0V1JJVEVfT05DRSh2c2ktXHUwMDNldHhfcmluZ3NbaV0sIE5VTEwpO1xuIFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcbiBcdFx0XHRpZiAodnNpLVx1MDAzZXhkcF9yaW5ncylcbiBcdFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXhkcF9yaW5nc1tpXSwgTlVMTCk7XG4mIzQzO1x0XHRcdGtmcmVlX3JjdSh0eF9yaW5nLCByY3UpO1xuIFx0XHR9XG4gXHR9XG4gfVxuQEAgLTEyMDQ2LDcgJiM0MzsxMjA0OSw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IGk0MGVfdnNpICp2c2ksIGludCB2X2lkeClcbiBcdGNwdW1hc2tfY29weShcdTAwMjZxX3ZlY3Rvci1cdTAwM2VhZmZpbml0eV9tYXNrLCBjcHVfcG9zc2libGVfbWFzayk7XG4gXG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldilcbi1cdFx0bmV0aWZfbmFwaV9hZGQodnNpLVx1MDAzZW5ldGRldiwgXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSwgaTQwZV9uYXBpX3BvbGwpO1xuJiM0MztcdFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksXG4mIzQzO1x0XHRcdFx0ICAgICAgaTQwZV9uYXBpX3BvbGwsIHZfaWR4KTtcbiBcbiBcdC8qIHRpZSBxX3ZlY3RvciBhbmQgdnNpIHRvZ2V0aGVyICovXG4gXHR2c2ktXHUwMDNlcV92ZWN0b3JzW3ZfaWR4XSA9IHFfdmVjdG9yO1xuQEAgLTE0MjAxLDggJiM0MzsxNDIwNSw5IEBAIGludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuICAqKi9cbiBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4ge1xuLVx0aW50IHJldCA9IC1FTk9FTlQ7XG4gXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktXHUwMDNlYmFjaztcbiYjNDM7XHRib29sIHJldXNlX2lycV9sdW1wID0gZmFsc2U7XG4mIzQzO1x0aW50IHJldCA9IC1FTk9FTlQ7XG4gXG4gXHRpZiAodnNpLVx1MDAzZXFfdmVjdG9yc1swXSkge1xuIFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VlNJICVkIGhhcyBleGlzdGluZyBxX3ZlY3RvcnNcXG5cJiMzNDssXG5AQCAtMTQyMTAsNyAmIzQzOzE0MjE1LDEwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0cmV0dXJuIC1FRVhJU1Q7XG4gXHR9XG4gXG4tXHRpZiAodnNpLVx1MDAzZWJhc2VfdmVjdG9yKSB7XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2ViYXNlX3ZlY3RvcilcbiYjNDM7XHRcdHJldXNlX2lycV9sdW1wID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2ViYXNlX3ZlY3RvciBcdTAwMjZcdTAwMjYgIXJldXNlX2lycV9sdW1wKSB7XG4gXHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCB2c2ktXHUwMDNlc2VpZCwgdnNpLVx1MDAzZWJhc2VfdmVjdG9yKTtcbiBcdFx0cmV0dXJuIC1FRVhJU1Q7XG5AQCAtMTQyMzAsNiAmIzQzOzE0MjM4LDEwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdCovXG4gXHRpZiAoIXRlc3RfYml0KEk0MEVfRkxBR19NU0lYX0VOQSwgcGYtXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocmV1c2VfaXJxX2x1bXApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdGlmICh2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycylcbiBcdFx0dnNpLVx1MDAzZWJhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtXHUwMDNlaXJxX3BpbGUsXG4gXHRcdFx0XHRcdFx0IHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzLCB2c2ktXHUwMDNlaWR4KTtcbkBAIC0xNDI1NSw3ICYjNDM7MTQyNjcsOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3RcbiAgKiBvbiBzdWNjZXNzLCBvdGhlcndpc2UgcmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuXG4gICoqL1xuLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiYjNDM7c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3ZzaSAqbWFpbl92c2k7XG4gXHR1MTYgYWxsb2NfcXVldWVfcGFpcnM7XG5AQCAtMTQyNjgsMTMgJiM0MzsxNDI4MSwyMiBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRwZiA9IHZzaS1cdTAwM2ViYWNrO1xuIFxuIFx0aTQwZV9wdXRfbHVtcChwZi1cdTAwM2VxcF9waWxlLCB2c2ktXHUwMDNlYmFzZV9xdWV1ZSwgdnNpLVx1MDAzZWlkeCk7XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbiBcdGk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9hcnJheXModnNpKTtcbiBcbi1cdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSwgZmFsc2UpO1xuIFx0aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSh2c2kpO1xuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xuJiM0MztcdHJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2kpO1xuIFx0aWYgKHJldClcbi1cdFx0Z290byBlcnJfdnNpO1xuJiM0MztcdFx0Z290byBlcnJfbmV0ZGV2O1xuJiM0MztcbiYjNDM7XHQvKiBSZWJ1aWxkIHFfdmVjdG9ycyBkdXJpbmcgVlNJIHJlaW5pdCBiZWNhdXNlIHRoZSBlZmZlY3RpdmUgY2hhbm5lbFxuJiM0MztcdCAqIGNvdW50IG1heSBjaGFuZ2UgbnVtX3FfdmVjdG9ycy4gS2VlcCB2ZWN0b3IgdG9wb2xvZ3kgYWxpZ25lZCB3aXRoIHRoZVxuJiM0MztcdCAqIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgZXRodG9vbCYjMzk7cyAuc2V0X2NoYW5uZWxzKCkgY2FsbGJhY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycl9uZXRkZXY7XG4gXG4gXHRhbGxvY19xdWV1ZV9wYWlycyA9IHZzaS1cdTAwM2VhbGxvY19xdWV1ZV9wYWlycyAqXG4gXHRcdFx0ICAgIChpNDBlX2VuYWJsZWRfeGRwX3ZzaSh2c2kpID8gMiA6IDEpO1xuQEAgLTE0Mjg0LDcgJiM0MzsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdHJhY2tpbmcgZm9yICVkIHF1ZXVlcyBmb3IgVlNJICVkIGVyciAlZFxcblwmIzM0OyxcbiBcdFx0XHQgYWxsb2NfcXVldWVfcGFpcnMsIHZzaS1cdTAwM2VzZWlkLCByZXQpO1xuLVx0XHRnb3RvIGVycl92c2k7XG4mIzQzO1x0XHRnb3RvIGVycl9yaW5ncztcbiBcdH1cbiBcdHZzaS1cdTAwM2ViYXNlX3F1ZXVlID0gcmV0O1xuIFxuQEAgLTE0MzA5LDE2ICYjNDM7MTQzMzEsMTkgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFxuIGVycl9yaW5nczpcbiBcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4mIzQzO2Vycl9uZXRkZXY6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuLVx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRcdGlmIChsb2NrX2FjcXVpcmVkKVxuJiM0MztcdFx0XHR1bnJlZ2lzdGVyX25ldGRldmljZSh2c2ktXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2ID0gTlVMTDtcbiBcdH1cbiBcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxuIFx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbiBcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXHUwMDI2cGYtXHUwMDNlaHcsIHZzaS1cdTAwM2VzZWlkLCBOVUxMKTtcbi1lcnJfdnNpOlxuIFx0aTQwZV92c2lfY2xlYXIodnNpKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbkBAIC0xNDQ0OCwyNiAmIzQzOzE0NDczLDE3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLFxuIFx0XHRcdFx0Z290byBlcnJfbmV0ZGV2O1xuIFx0XHRcdFNFVF9ORVRERVZfREVWTElOS19QT1JUKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnBmLVx1MDAzZWRldmxpbmtfcG9ydCk7XG4gXHRcdH1cbi1cdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gZXJyX2RsX3BvcnQ7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IHRydWU7XG4tXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHZzaS1cdTAwM2VuZXRkZXYpO1xuLSNpZmRlZiBDT05GSUdfSTQwRV9EQ0Jcbi1cdFx0LyogU2V0dXAgRENCIG5ldGxpbmsgaW50ZXJmYWNlICovXG4tXHRcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcbi0jZW5kaWYgLyogQ09ORklHX0k0MEVfRENCICovXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBJNDBFX1ZTSV9GRElSOlxuIFx0XHQvKiBzZXQgdXAgdmVjdG9ycyBhbmQgcmluZ3MgaWYgbmVlZGVkICovXG4tXHRcdHJldCA9IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnModnNpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIGVycl9tc2l4O1xuLVxuIFx0XHRyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfcmluZ3M7XG4gXG4mIzQzO1x0XHRyZXQgPSBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHZzaSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIGVycl9xdmVjO1xuJiM0MztcbiBcdFx0LyogbWFwIGFsbCBvZiB0aGUgcmluZ3MgdG8gdGhlIHFfdmVjdG9ycyAqL1xuIFx0XHRpNDBlX3ZzaV9tYXBfcmluZ3NfdG9fdmVjdG9ycyh2c2kpO1xuIFxuQEAgLTE0NDg0LDIzICYjNDM7MTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfY29uZmlnO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAodnNpLVx1MDAzZW5ldGRldikge1xuJiM0MztcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJfY29uZmlnO1xuJiM0MztcdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbiYjNDM7XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MzsjaWZkZWYgQ09ORklHX0k0MEVfRENCXG4mIzQzO1x0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbiYjNDM7XHRcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcbiYjNDM7I2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqL1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gdnNpO1xuIFxuIGVycl9jb25maWc6XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbiYjNDM7ZXJyX3F2ZWM6XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuIGVycl9yaW5nczpcbi1cdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4tZXJyX21zaXg6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuIFx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbi1cdFx0ZnJlZV9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXYgPSBOVUxMO1xuIFx0fVxuLWVycl9kbF9wb3J0OlxuIFx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG4gXHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuIGVycl9uZXRkZXY6XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2VuZXRkZXYpIHtcbiYjNDM7XHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MztcdFx0dnNpLVx1MDAzZW5ldGRldiA9IE5VTEw7XG4mIzQzO1x0fVxuIFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcdTAwMjZwZi1cdTAwM2VodywgdnNpLVx1MDAzZXNlaWQsIE5VTEwpO1xuIGVycl92c2k6XG4gXHRpNDBlX3ZzaV9jbGVhcih2c2kpO1xuQEAgLTE1MDM0LDcgJiM0MzsxNTA2NCw3IEBAIHN0YXRpYyBpbnQgaTQwZV9zZXR1cF9wZl9zd2l0Y2goc3RydWN0IGk0MGVfcGYgKnBmLCBib29sIHJlaW5pdCwgYm9vbCBsb2NrX2FjcXVpXG4gXHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9zZXR1cChwZiwgSTQwRV9WU0lfTUFJTixcbiBcdFx0XHRcdFx0XHQgIHVwbGlua19zZWlkLCAwKTtcbiBcdFx0ZWxzZSBpZiAocmVpbml0KVxuLVx0XHRcdG1haW5fdnNpID0gaTQwZV92c2lfcmVpbml0X3NldHVwKG1haW5fdnNpKTtcbiYjNDM7XHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xuIFx0XHRpZiAoIW1haW5fdnNpKSB7XG4gXHRcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3NldHVwIG9mIE1BSU4gVlNJIGZhaWxlZFxcblwmIzM0Oyk7XG4gXHRcdFx0aTQwZV9jbG91ZF9maWx0ZXJfZXhpdChwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXG5pbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuY1xuQEAgLTE1NTYsOCAmIzQzOzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0aWYgKHBmLVx1MDAzZXB0cF9jbG9jaykge1xuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihwZi1cdTAwM2VwdHBfY2xvY2spO1xuIFx0XHRwZi1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuLVx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IHJlbW92ZWQgUEhDIG9uICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbi1cdFx0XHQgbWFpbl92c2ktXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0aWYgKG1haW5fdnNpKVxuJiM0MztcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IHJlbW92ZWQgUEhDIG9uICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbiYjNDM7XHRcdFx0XHQgbWFpbl92c2ktXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuIFx0fVxuIFxuIFx0aWYgKGk0MGVfaXNfcHRwX3Bpbl9kZXYoXHUwMDI2cGYtXHUwMDNlaHcpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7STQwRSYjMzQ7LAogICAgJiMzNDtJNDBFX0RDQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2k0MGVfdnNpX2FsbG9jX2FycmF5cyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9mcmVlX2FycmF5cyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3JlaW5pdF9zZXR1cCYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9zZXR1cCYjMzQ7LAogICAgJiMzNDtpNDBlX3B0cF9zdG9wJiMzNDssCiAgICAmIzM0O2k0MGVfc2V0X251bV9yaW5nc19pbl92c2kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZjNjZiMTM1OWQwNTg0MjhiYmRkMDE1NmYzYzQ4NTc3NzdhMWVkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMjA6NTM6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwppbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwpAQCAtMTE0MDYsMTAgJiM0MzsxMTQwNiwxNCBAQCBzdGF0aWMgdm9pZCBpNDBlX3NlcnZpY2VfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpCiB7CiAJc3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLSZndDtiYWNrOwomIzQzOwl1MTYgcXBzOwogCiAJc3dpdGNoICh2c2ktJmd0O3R5cGUpIHsKIAljYXNlIEk0MEVfVlNJX01BSU46CiAJCXZzaS0mZ3Q7YWxsb2NfcXVldWVfcGFpcnMgPSBwZi0mZ3Q7bnVtX2xhbl9xcHM7CiYjNDM7CQlxcHMgPSB2c2ktJmd0O3JlcV9xdWV1ZV9wYWlycyA/CiYjNDM7CQkgICAgICBtaW4odnNpLSZndDtyZXFfcXVldWVfcGFpcnMsIHBmLSZndDtudW1fbGFuX3FwcykgOgomIzQzOwkJICAgICAgcGYtJmd0O251bV9sYW5fcXBzOwogCQlpZiAoIXZzaS0mZ3Q7bnVtX3R4X2Rlc2MpCiAJCQl2c2ktJmd0O251bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUywKIAkJCQkJCSBJNDBFX1JFUV9ERVNDUklQVE9SX01VTFRJUExFKTsKQEAgLTExNDE3LDcgJiM0MzsxMTQyMSw3IEBAIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAkJCXZzaS0mZ3Q7bnVtX3J4X2Rlc2MgPSBBTElHTihJNDBFX0RFRkFVTFRfTlVNX0RFU0NSSVBUT1JTLAogCQkJCQkJIEk0MEVfUkVRX0RFU0NSSVBUT1JfTVVMVElQTEUpOwogCQlpZiAodGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi0mZ3Q7ZmxhZ3MpKQotCQkJdnNpLSZndDtudW1fcV92ZWN0b3JzID0gcGYtJmd0O251bV9sYW5fbXNpeDsKJiM0MzsJCQl2c2ktJmd0O251bV9xX3ZlY3RvcnMgPSBjbGFtcChxcHMsIDEsIHBmLSZndDtudW1fbGFuX21zaXgpOwogCQllbHNlCiAJCQl2c2ktJmd0O251bV9xX3ZlY3RvcnMgPSAxOwogCkBAIC0xMTQ2OSwxMiAmIzQzOzExNDczLDExIEBAIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIC8qKgogICogaTQwZV92c2lfYWxsb2NfYXJyYXlzIC0gQWxsb2NhdGUgcXVldWUgYW5kIHZlY3RvciBwb2ludGVyIGFycmF5cyBmb3IgdGhlIHZzaQogICogQHZzaTogVlNJIHBvaW50ZXIKLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLgogICoKICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKQogICogT24gc3VjY2VzczogcmV0dXJucyAwCiAgKiovCi1zdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBhbGxvY19xdmVjdG9ycykKJiM0MztzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIHsKIAlzdHJ1Y3QgaTQwZV9yaW5nICoqbmV4dF9yaW5nczsKIAlpbnQgc2l6ZTsKQEAgLTExNDkzLDE5ICYjNDM7MTE0OTYsMjAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpCiAJfQogCXZzaS0mZ3Q7cnhfcmluZ3MgPSBuZXh0X3JpbmdzOwogCi0JaWYgKGFsbG9jX3F2ZWN0b3JzKSB7Ci0JCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi8KLQkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS0mZ3Q7bnVtX3FfdmVjdG9yczsKLQkJdnNpLSZndDtxX3ZlY3RvcnMgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwotCQlpZiAoIXZzaS0mZ3Q7cV92ZWN0b3JzKSB7Ci0JCQlyZXQgPSAtRU5PTUVNOwotCQkJZ290byBlcnJfdmVjdG9yczsKLQkJfQomIzQzOwkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHFfdmVjdG9yIHBvaW50ZXJzICovCiYjNDM7CXNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktJmd0O251bV9xX3ZlY3RvcnM7CiYjNDM7CXZzaS0mZ3Q7cV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF2c2ktJmd0O3FfdmVjdG9ycykgewomIzQzOwkJcmV0ID0gLUVOT01FTTsKJiM0MzsJCWdvdG8gZXJyX3ZlY3RvcnM7CiAJfQogCXJldHVybiByZXQ7CiAKIGVycl92ZWN0b3JzOgogCWtmcmVlKHZzaS0mZ3Q7dHhfcmluZ3MpOwomIzQzOwl2c2ktJmd0O3R4X3JpbmdzID0gTlVMTDsKJiM0MzsJdnNpLSZndDtyeF9yaW5ncyA9IE5VTEw7CiYjNDM7CXZzaS0mZ3Q7eGRwX3JpbmdzID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMTU3OCw3ICYjNDM7MTE1ODIsNyBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3JpbmdzOwogCi0JcmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7CiYjNDM7CXJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2kpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3JpbmdzOwogCkBAIC0xMTYwMywxOCAmIzQzOzExNjA3LDE1IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfbWVtX2FsbG9jKHN0cnVjdCBpNDBlX3BmICpwZiwgZW51bSBpNDBlX3ZzaV90eXBlIHR5cGUpCiAvKioKICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJCiAgKiBAdnNpOiBWU0kgcG9pbnRlcgotICogQGZyZWVfcXZlY3RvcnM6IGEgYm9vbCB0byBzcGVjaWZ5IGlmIHFfdmVjdG9ycyBuZWVkIHRvIGJlIGZyZWVkLgogICoKICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKQogICogT24gc3VjY2VzczogcmV0dXJucyAwCiAgKiovCi1zdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBmcmVlX3F2ZWN0b3JzKQomIzQzO3N0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKQogewogCS8qIGZyZWUgdGhlIHJpbmcgYW5kIHZlY3RvciBjb250YWluZXJzICovCi0JaWYgKGZyZWVfcXZlY3RvcnMpIHsKLQkJa2ZyZWUodnNpLSZndDtxX3ZlY3RvcnMpOwotCQl2c2ktJmd0O3FfdmVjdG9ycyA9IE5VTEw7Ci0JfQomIzQzOwlrZnJlZSh2c2ktJmd0O3FfdmVjdG9ycyk7CiYjNDM7CXZzaS0mZ3Q7cV92ZWN0b3JzID0gTlVMTDsKIAlrZnJlZSh2c2ktJmd0O3R4X3JpbmdzKTsKIAl2c2ktJmd0O3R4X3JpbmdzID0gTlVMTDsKIAl2c2ktJmd0O3J4X3JpbmdzID0gTlVMTDsKQEAgLTExNjc0LDcgJiM0MzsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJaTQwZV9wdXRfbHVtcChwZi0mZ3Q7aXJxX3BpbGUsIHZzaS0mZ3Q7YmFzZV92ZWN0b3IsIHZzaS0mZ3Q7aWR4KTsKIAogCWJpdG1hcF9mcmVlKHZzaS0mZ3Q7YWZfeGRwX3pjX3Fwcyk7Ci0JaTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTsKJiM0MzsJaTQwZV92c2lfZnJlZV9hcnJheXModnNpKTsKIAlpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpOwogCiAJcGYtJmd0O3ZzaVt2c2ktJmd0O2lkeF0gPSBOVUxMOwpAQCAtMTE2OTksMTEgJiM0MzsxMTcwMCwxMyBAQCBzdGF0aWMgdm9pZCBpNDBlX3ZzaV9jbGVhcl9yaW5ncyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAogCWlmICh2c2ktJmd0O3R4X3JpbmdzICZhbXA7JmFtcDsgdnNpLSZndDt0eF9yaW5nc1swXSkgewogCQlmb3IgKGkgPSAwOyBpICZsdDsgdnNpLSZndDthbGxvY19xdWV1ZV9wYWlyczsgaSYjNDM7JiM0MzspIHsKLQkJCWtmcmVlX3JjdSh2c2ktJmd0O3R4X3JpbmdzW2ldLCByY3UpOwomIzQzOwkJCXN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktJmd0O3R4X3JpbmdzW2ldOwomIzQzOwogCQkJV1JJVEVfT05DRSh2c2ktJmd0O3R4X3JpbmdzW2ldLCBOVUxMKTsKIAkJCVdSSVRFX09OQ0UodnNpLSZndDtyeF9yaW5nc1tpXSwgTlVMTCk7CiAJCQlpZiAodnNpLSZndDt4ZHBfcmluZ3MpCiAJCQkJV1JJVEVfT05DRSh2c2ktJmd0O3hkcF9yaW5nc1tpXSwgTlVMTCk7CiYjNDM7CQkJa2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7CiAJCX0KIAl9CiB9CkBAIC0xMjA0Niw3ICYjNDM7MTIwNDksOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX3FfdmVjdG9yKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgdl9pZHgpCiAJY3B1bWFza19jb3B5KCZhbXA7cV92ZWN0b3ItJmd0O2FmZmluaXR5X21hc2ssIGNwdV9wb3NzaWJsZV9tYXNrKTsKIAogCWlmICh2c2ktJmd0O25ldGRldikKLQkJbmV0aWZfbmFwaV9hZGQodnNpLSZndDtuZXRkZXYsICZhbXA7cV92ZWN0b3ItJmd0O25hcGksIGk0MGVfbmFwaV9wb2xsKTsKJiM0MzsJCW5ldGlmX25hcGlfYWRkX2NvbmZpZyh2c2ktJmd0O25ldGRldiwgJmFtcDtxX3ZlY3Rvci0mZ3Q7bmFwaSwKJiM0MzsJCQkJICAgICAgaTQwZV9uYXBpX3BvbGwsIHZfaWR4KTsKIAogCS8qIHRpZSBxX3ZlY3RvciBhbmQgdnNpIHRvZ2V0aGVyICovCiAJdnNpLSZndDtxX3ZlY3RvcnNbdl9pZHhdID0gcV92ZWN0b3I7CkBAIC0xNDIwMSw4ICYjNDM7MTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKICAqKi8KIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIHsKLQlpbnQgcmV0ID0gLUVOT0VOVDsKIAlzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktJmd0O2JhY2s7CiYjNDM7CWJvb2wgcmV1c2VfaXJxX2x1bXAgPSBmYWxzZTsKJiM0MzsJaW50IHJldCA9IC1FTk9FTlQ7CiAKIAlpZiAodnNpLSZndDtxX3ZlY3RvcnNbMF0pIHsKIAkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1ZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXG4mIzM0OywKQEAgLTE0MjEwLDcgJiM0MzsxNDIxNSwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJCXJldHVybiAtRUVYSVNUOwogCX0KIAotCWlmICh2c2ktJmd0O2Jhc2VfdmVjdG9yKSB7CiYjNDM7CWlmICh2c2ktJmd0O3R5cGUgPT0gSTQwRV9WU0lfTUFJTiAmYW1wOyZhbXA7IHZzaS0mZ3Q7YmFzZV92ZWN0b3IpCiYjNDM7CQlyZXVzZV9pcnFfbHVtcCA9IHRydWU7CiYjNDM7CiYjNDM7CWlmICh2c2ktJmd0O2Jhc2VfdmVjdG9yICZhbXA7JmFtcDsgIXJldXNlX2lycV9sdW1wKSB7CiAJCWRldl9pbmZvKCZhbXA7cGYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDtWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXG4mIzM0OywKIAkJCSB2c2ktJmd0O3NlaWQsIHZzaS0mZ3Q7YmFzZV92ZWN0b3IpOwogCQlyZXR1cm4gLUVFWElTVDsKQEAgLTE0MjMwLDYgJiM0MzsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJKi8KIAlpZiAoIXRlc3RfYml0KEk0MEVfRkxBR19NU0lYX0VOQSwgcGYtJmd0O2ZsYWdzKSkKIAkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJaWYgKHJldXNlX2lycV9sdW1wKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlpZiAodnNpLSZndDtudW1fcV92ZWN0b3JzKQogCQl2c2ktJmd0O2Jhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtJmd0O2lycV9waWxlLAogCQkJCQkJIHZzaS0mZ3Q7bnVtX3FfdmVjdG9ycywgdnNpLSZndDtpZHgpOwpAQCAtMTQyNTUsNyAmIzQzOzE0MjY3LDggQEAgc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKQogICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3QKICAqIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIE5VTEwgb24gZmFpbHVyZS4KICAqKi8KLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKJiM0MztzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksCiYjNDM7CQkJCQkgICAgICBib29sIGxvY2tfYWNxdWlyZWQpCiB7CiAJc3RydWN0IGk0MGVfdnNpICptYWluX3ZzaTsKIAl1MTYgYWxsb2NfcXVldWVfcGFpcnM7CkBAIC0xNDI2OCwxMyAmIzQzOzE0MjgxLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAlwZiA9IHZzaS0mZ3Q7YmFjazsKIAogCWk0MGVfcHV0X2x1bXAocGYtJmd0O3FwX3BpbGUsIHZzaS0mZ3Q7YmFzZV9xdWV1ZSwgdnNpLSZndDtpZHgpOwomIzQzOwlpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpOwogCWk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7CiYjNDM7CWk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSk7CiAKLQlpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2ksIGZhbHNlKTsKIAlpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHZzaSk7Ci0JcmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpOwomIzQzOwlyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycl92c2k7CiYjNDM7CQlnb3RvIGVycl9uZXRkZXY7CiYjNDM7CiYjNDM7CS8qIFJlYnVpbGQgcV92ZWN0b3JzIGR1cmluZyBWU0kgcmVpbml0IGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBjaGFubmVsCiYjNDM7CSAqIGNvdW50IG1heSBjaGFuZ2UgbnVtX3FfdmVjdG9ycy4gS2VlcCB2ZWN0b3IgdG9wb2xvZ3kgYWxpZ25lZCB3aXRoIHRoZQomIzQzOwkgKiBxdWV1ZSBjb25maWd1cmF0aW9uIGFmdGVyIGV0aHRvb2wmIzM5O3MgLnNldF9jaGFubmVscygpIGNhbGxiYWNrLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfbmV0ZGV2OwogCiAJYWxsb2NfcXVldWVfcGFpcnMgPSB2c2ktJmd0O2FsbG9jX3F1ZXVlX3BhaXJzICoKIAkJCSAgICAoaTQwZV9lbmFibGVkX3hkcF92c2kodnNpKSA/IDIgOiAxKTsKQEAgLTE0Mjg0LDcgJiM0MzsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAogCQkJICYjMzQ7ZmFpbGVkIHRvIGdldCB0cmFja2luZyBmb3IgJWQgcXVldWVzIGZvciBWU0kgJWQgZXJyICVkXG4mIzM0OywKIAkJCSBhbGxvY19xdWV1ZV9wYWlycywgdnNpLSZndDtzZWlkLCByZXQpOwotCQlnb3RvIGVycl92c2k7CiYjNDM7CQlnb3RvIGVycl9yaW5nczsKIAl9CiAJdnNpLSZndDtiYXNlX3F1ZXVlID0gcmV0OwogCkBAIC0xNDMwOSwxNiAmIzQzOzE0MzMxLDE5IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAogZXJyX3JpbmdzOgogCWk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7CiYjNDM7ZXJyX25ldGRldjoKIAlpZiAodnNpLSZndDtuZXRkZXZfcmVnaXN0ZXJlZCkgewogCQl2c2ktJmd0O25ldGRldl9yZWdpc3RlcmVkID0gZmFsc2U7Ci0JCXVucmVnaXN0ZXJfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCWlmIChsb2NrX2FjcXVpcmVkKQomIzQzOwkJCXVucmVnaXN0ZXJfbmV0ZGV2aWNlKHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQl1bnJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7CiAJCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKIAkJdnNpLSZndDtuZXRkZXYgPSBOVUxMOwogCX0KIAlpZiAodnNpLSZndDt0eXBlID09IEk0MEVfVlNJX01BSU4pCiAJCWk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpOwogCWk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoJmFtcDtwZi0mZ3Q7aHcsIHZzaS0mZ3Q7c2VpZCwgTlVMTCk7Ci1lcnJfdnNpOgogCWk0MGVfdnNpX2NsZWFyKHZzaSk7CiAJcmV0dXJuIE5VTEw7CiB9CkBAIC0xNDQ0OCwyNiAmIzQzOzE0NDczLDE3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLAogCQkJCWdvdG8gZXJyX25ldGRldjsKIAkJCVNFVF9ORVRERVZfREVWTElOS19QT1JUKHZzaS0mZ3Q7bmV0ZGV2LCAmYW1wO3BmLSZndDtkZXZsaW5rX3BvcnQpOwogCQl9Ci0JCXJldCA9IHJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycl9kbF9wb3J0OwotCQl2c2ktJmd0O25ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTsKLQkJbmV0aWZfY2Fycmllcl9vZmYodnNpLSZndDtuZXRkZXYpOwotI2lmZGVmIENPTkZJR19JNDBFX0RDQgotCQkvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi8KLQkJaTQwZV9kY2JubF9zZXR1cCh2c2kpOwotI2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqLwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEk0MEVfVlNJX0ZESVI6CiAJCS8qIHNldCB1cCB2ZWN0b3JzIGFuZCByaW5ncyBpZiBuZWVkZWQgKi8KLQkJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJfbXNpeDsKLQogCQlyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9yaW5nczsKIAomIzQzOwkJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIGVycl9xdmVjOwomIzQzOwogCQkvKiBtYXAgYWxsIG9mIHRoZSByaW5ncyB0byB0aGUgcV92ZWN0b3JzICovCiAJCWk0MGVfdnNpX21hcF9yaW5nc190b192ZWN0b3JzKHZzaSk7CiAKQEAgLTE0NDg0LDIzICYjNDM7MTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsCiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9jb25maWc7CiAJfQomIzQzOwomIzQzOwlpZiAodnNpLSZndDtuZXRkZXYpIHsKJiM0MzsJCXJldCA9IHJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWdvdG8gZXJyX2NvbmZpZzsKJiM0MzsJCXZzaS0mZ3Q7bmV0ZGV2X3JlZ2lzdGVyZWQgPSB0cnVlOwomIzQzOwkJbmV0aWZfY2Fycmllcl9vZmYodnNpLSZndDtuZXRkZXYpOwomIzQzOyNpZmRlZiBDT05GSUdfSTQwRV9EQ0IKJiM0MzsJCS8qIFNldHVwIERDQiBuZXRsaW5rIGludGVyZmFjZSAqLwomIzQzOwkJaTQwZV9kY2JubF9zZXR1cCh2c2kpOwomIzQzOyNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi8KJiM0MzsJfQomIzQzOwogCXJldHVybiB2c2k7CiAKIGVycl9jb25maWc6CiYjNDM7CWk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7CiYjNDM7ZXJyX3F2ZWM6CiAJaTQwZV92c2lfY2xlYXJfcmluZ3ModnNpKTsKIGVycl9yaW5nczoKLQlpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpOwotZXJyX21zaXg6CiAJaWYgKHZzaS0mZ3Q7bmV0ZGV2X3JlZ2lzdGVyZWQpIHsKIAkJdnNpLSZndDtuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCQl1bnJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7Ci0JCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKLQkJdnNpLSZndDtuZXRkZXYgPSBOVUxMOwogCX0KLWVycl9kbF9wb3J0OgogCWlmICh2c2ktJmd0O3R5cGUgPT0gSTQwRV9WU0lfTUFJTikKIAkJaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChwZik7CiBlcnJfbmV0ZGV2OgomIzQzOwlpZiAodnNpLSZndDtuZXRkZXYpIHsKJiM0MzsJCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCXZzaS0mZ3Q7bmV0ZGV2ID0gTlVMTDsKJiM0MzsJfQogCWk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoJmFtcDtwZi0mZ3Q7aHcsIHZzaS0mZ3Q7c2VpZCwgTlVMTCk7CiBlcnJfdnNpOgogCWk0MGVfdnNpX2NsZWFyKHZzaSk7CkBAIC0xNTAzNCw3ICYjNDM7MTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aQogCQkJbWFpbl92c2kgPSBpNDBlX3ZzaV9zZXR1cChwZiwgSTQwRV9WU0lfTUFJTiwKIAkJCQkJCSAgdXBsaW5rX3NlaWQsIDApOwogCQllbHNlIGlmIChyZWluaXQpCi0JCQltYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7CiYjNDM7CQkJbWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpOwogCQlpZiAoIW1haW5fdnNpKSB7CiAJCQlkZXZfaW5mbygmYW1wO3BmLSZndDtwZGV2LSZndDtkZXYsICYjMzQ7c2V0dXAgb2YgTUFJTiBWU0kgZmFpbGVkXG4mIzM0Oyk7CiAJCQlpNDBlX2Nsb3VkX2ZpbHRlcl9leGl0KHBmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYwppbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmMKQEAgLTE1NTYsOCAmIzQzOzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKQogCWlmIChwZi0mZ3Q7cHRwX2Nsb2NrKSB7CiAJCXB0cF9jbG9ja191bnJlZ2lzdGVyKHBmLSZndDtwdHBfY2xvY2spOwogCQlwZi0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKLQkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0OyVzOiByZW1vdmVkIFBIQyBvbiAlc1xuJiMzNDssIF9fZnVuY19fLAotCQkJIG1haW5fdnNpLSZndDtuZXRkZXYtJmd0O25hbWUpOwomIzQzOwkJaWYgKG1haW5fdnNpKQomIzQzOwkJCWRldl9pbmZvKCZhbXA7cGYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDslczogcmVtb3ZlZCBQSEMgb24gJXNcbiYjMzQ7LCBfX2Z1bmNfXywKJiM0MzsJCQkJIG1haW5fdnNpLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCX0KIAogCWlmIChpNDBlX2lzX3B0cF9waW5fZGV2KCZhbXA7cGYtJmd0O2h3KSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGk0MGVfbWFpbi5jYCBhbmQgYGk0MGVfcHRwLmNgIOKAkyBzcGVjaWZpY2FsbHksIGNoYW5nZXMgcmVsYXRlZCB0byBWU0kgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIHRvIGJlIGNsZWFuaW5nIHVwIFZTSSByZWluaXRpYWxpemF0aW9uLCBxdWV1ZSB2ZWN0b3IgYWxsb2NhdGlvbiwgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZy4gSSByZWNvZ25pemUgdGhpcyBhcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IFRoZSBpNDBlIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIFhMNzEwIEZhbWlseS4KCk15IG5leHQgc3RlcCBpcyB0byBldmFsdWF0ZSBmdXp6aW5nIHBvdGVudGlhbC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgd2UgY2FuIGZ1enogdGhpcy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgZ29vZCBzdXBwb3J0IGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzIHZpYSB2aXJ0dWFsIFBDSSBvciBzaW1pbGFyIHRlY2huaXF1ZXM/IEkgcmVjYWxsIGBzeXpfcGNpYCBhbmQgYHN5el91c2JgLCBidXQgUENJIGZ1enppbmcgY2FuIGJlIHRyaWNraWVyLiBJdCBkZXBlbmRzIG9uIHdoZXRoZXIgUUVNVSBwcm9wZXJseSBlbXVsYXRlcyB0aGUgaTQwZSwgb3IgaWYgc3l6a2FsbGVyIGlzIGFibGUgdG8gdXNlIGUxMDAwZS9pNDBlIGVtdWxhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgSSB0aGluayBRRU1VIGRvZXMgZW11bGF0ZSBzb21lIEludGVsIE5JQ3MhIEkmIzM5O2QgYmV0dGVyIGNvbmZpcm0gaXQgaGFzIGk0MGUgZW11bGF0aW9uLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIHNwZWNpZmljIHByb21wdCBpcyB0YWxraW5nIGFib3V0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYnV0IEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIGk0MGUhIE5vdyB0aGF0IEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSBpNDBlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKTXkgdGhvdWdodCBwcm9jZXNzIGlzOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19JNDBFYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgaXQmIzM5O3MgYmFjayB0byBhIHNpbXBsZSBzZWFyY2ggZm9yIGBDT05GSUdfSTQwRWAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSTQwRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjk6Y29uZmlnIEk0MEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBYTDcxMCBGYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNTA6Y29uZmlnIEk0MEVfRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjYyPWNvbmZpZyBJQVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI2ODpjb25maWcgSTQwRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpNDBlIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBgSTQwRWAuIFRoZSBwYXRjaCBhZmZlY3RzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYGk0MGVfdnNpX2FsbG9jX2FycmF5c2AsIGBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzYCwgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAsIGFuZCBgaTQwZV92c2lfc2V0dXBgLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBjaGVja2luZyBRRU1VIHN1cHBvcnQgZm9yIGk0MGUsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB3ZSYjMzk7cmUgbGV2ZXJhZ2luZyBzeXprYWxsZXIgYW5kIGl0cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIHRoYXQmIzM5O3Mgbm90IGRpcmVjdGx5IHJlbGV2YW50IGhlcmUuIEJhY2sgdG8gdGhlIHBhdGNoIGl0c2VsZi4KClJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCBhbmQgYGk0MGVfdnNpX3NldHVwYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZHVyaW5nIGRldmljZSBwcm9iZSBhbmQgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBvciBhcmUgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgb25lcy4KCkxldCYjMzk7cyBzZWU6IGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBgaTQwZV92c2lfc2V0dXBgLCBgaTQwZV9wdHBfc3RvcGAsIGBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpYCwgYW5kIGBpNDBlX3ZzaV9mcmVlX2FycmF5c2AuIFRob3NlIGFyZSB0aGUgcmVsZXZhbnQgc3ltYm9scy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdW5kZXJzdGFuZGluZyBleGFjdGx5IGhvdyB0aGUgY2hhbmdlcyB0byBgaTQwZV92c2lfcmVpbml0X3NldHVwYCBhbmQgYGk0MGVfdnNpX3NldHVwYCBpbXBhY3QgdGhlIG92ZXJhbGwgZmxvdy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aG9zZSB0d28sIGFuZCB0aGVuIHNlZSBob3cgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG1pZ2h0IGJlIGltcGFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k0MGVfdnNpX3JlaW5pdF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTQyMDY9c3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNjEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MjYyOiAqIGk0MGVfdnNpX3JlaW5pdF9zZXR1cCAtIHJldHVybiBhbmQgcmVhbGxvY2F0ZSByZXNvdXJjZXMgZm9yIGEgVlNJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYzLSAqIEB2c2k6IHBvaW50ZXIgdG8gdGhlIHZzaS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjY5LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNzA6c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDI3MS1cdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTUwMDU9c3RhdGljIGludCBpNDBlX3NldHVwX3BmX3N3aXRjaChzdHJ1Y3QgaTQwZV9wZiAqcGYsIGJvb2wgcmVpbml0LCBib29sIGxvY2tfYWNxdWlyZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNTA2Ni1cdFx0ZWxzZSBpZiAocmVpbml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNTA2NzpcdFx0XHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSwgbG9ja19hY3F1aXJlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE1MDY4LVx0XHRpZiAoIW1haW5fdnNpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzMAoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guICBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYCwgYGk0MGVfdnNpX2ZyZWVfYXJyYXlzYCwgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgLCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCwgYGk0MGVfdnNpX3NldHVwYCwgYGk0MGVfcHRwX3N0b3BgLCBhbmQgYGk0MGVfc2V0X251bV9yaW5nc19pbl92c2lgIOKAkyB0aG9zZSBhcmUgYWxsIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIGZvY3VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgc2hvdWxkIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBjb25maWd1cmF0aW9uIHN5bWJvbHMgdGhhdCBpbXBhY3QgdGhlc2UgZnVuY3Rpb25zLgoKQWhhLCBgQ09ORklHX0k0MEVgIGlzIHRoZSBtYWluIG9uZSwgYnV0IHRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgc2VjdGlvbiByZWZlcmVuY2luZyBgQ09ORklHX0k0MEVfRENCYC4gIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uOiBpdCBzZWVtcyBsaWtlIGBpNDBlX2RjYm5sX3NldHVwYCBpcyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0k0MEVfRENCYC4gU28gSSYjMzk7bGwgaW5jbHVkZSBgSTQwRV9EQ0JgIHRvbywganVzdCB0byBiZSBjb21wcmVoZW5zaXZlIGFuZCBjb3ZlciB0aGF0IGNvbmRpdGlvbmFsIHBhdGguIEl0JiMzOTtzIGEgYm9vbGVhbiwgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBzbyBJJiMzOTtsbCBiZSBzdXJlIHRvIGhhbmRsZSB0aGF0LiBJIHdhbnQgdG8gaW5jbHVkZSBhbGwgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlIGluY2x1c2lvbiBvZiBib3RoIGBJNDBFYCBhbmQgYEk0MEVfRENCYCwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJpcGUgZm9yIGZ1enppbmcuIEkmIzM5O20gc2F0aXNmaWVkIHRoYXQgSSYjMzk7dmUgaWRlbnRpZmllZCBhbGwgdGhlIGtleSBhcmVhcy4KClNvLCBsZXQgbWUgc29saWRpZnkgdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczoKCiogICBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYAoqICAgYGk0MGVfdnNpX2ZyZWVfYXJyYXlzYAoqICAgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgCiogICBgaTQwZV92c2lfcmVpbml0X3NldHVwYAoqICAgYGk0MGVfdnNpX3NldHVwYAoqICAgYGk0MGVfcHRwX3N0b3BgCiogICBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAKCkkgY2FuIGNhbGwgc2V0LXJlc3VsdHMgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJNDBFJiMzNDssCiAgICAmIzM0O0k0MEVfRENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aTQwZV92c2lfYWxsb2NfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX2ZyZWVfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwX3ZlY3RvcnMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfcmVpbml0X3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfcHRwX3N0b3AmIzM0OywKICAgICYjMzQ7aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJNDBFJiMzNDssCiAgICAmIzM0O0k0MEVfRENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aTQwZV92c2lfYWxsb2NfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX2ZyZWVfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwX3ZlY3RvcnMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfcmVpbml0X3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfcHRwX3N0b3AmIzM0OywKICAgICYjMzQ7aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6NTM6NTIuNTI1NzI1MDI1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwMTg0MzY0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSTQwRVwiLFxuICAgIFwiSTQwRV9EQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpNDBlX3ZzaV9hbGxvY19hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX2ZyZWVfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzXCIsXG4gICAgXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgICBcImk0MGVfdnNpX3NldHVwXCIsXG4gICAgXCJpNDBlX3B0cF9zdG9wXCIsXG4gICAgXCJpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6NTM6NTIuNTI1NzM0MDA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIwMjI3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMjA6NTM6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG5AQCAtMTE0MDYsMTAgKzExNDA2LDE0IEBAIHN0YXRpYyB2b2lkIGk0MGVfc2VydmljZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBpNDBlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0dTE2IHFwcztcXG4gXFxuIFxcdHN3aXRjaCAodnNpLVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgSTQwRV9WU0lfTUFJTjpcXG4gXFx0XFx0dnNpLVxcdTAwM2VhbGxvY19xdWV1ZV9wYWlycyA9IHBmLVxcdTAwM2VudW1fbGFuX3FwcztcXG4rXFx0XFx0cXBzID0gdnNpLVxcdTAwM2VyZXFfcXVldWVfcGFpcnMgP1xcbitcXHRcXHQgICAgICBtaW4odnNpLVxcdTAwM2VyZXFfcXVldWVfcGFpcnMsIHBmLVxcdTAwM2VudW1fbGFuX3FwcykgOlxcbitcXHRcXHQgICAgICBwZi1cXHUwMDNlbnVtX2xhbl9xcHM7XFxuIFxcdFxcdGlmICghdnNpLVxcdTAwM2VudW1fdHhfZGVzYylcXG4gXFx0XFx0XFx0dnNpLVxcdTAwM2VudW1fdHhfZGVzYyA9IEFMSUdOKEk0MEVfREVGQVVMVF9OVU1fREVTQ1JJUFRPUlMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBJNDBFX1JFUV9ERVNDUklQVE9SX01VTFRJUExFKTtcXG5AQCAtMTE0MTcsNyArMTE0MjEsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3J4X2Rlc2MgPSBBTElHTihJNDBFX0RFRkFVTFRfTlVNX0RFU0NSSVBUT1JTLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XFxuIFxcdFxcdGlmICh0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVxcdTAwM2VmbGFncykpXFxuLVxcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycyA9IHBmLVxcdTAwM2VudW1fbGFuX21zaXg7XFxuK1xcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycyA9IGNsYW1wKHFwcywgMSwgcGYtXFx1MDAzZW51bV9sYW5fbXNpeCk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0dnNpLVxcdTAwM2VudW1fcV92ZWN0b3JzID0gMTtcXG4gXFxuQEAgLTExNDY5LDEyICsxMTQ3MywxMSBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIC8qKlxcbiAgKiBpNDBlX3ZzaV9hbGxvY19hcnJheXMgLSBBbGxvY2F0ZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgdnNpXFxuICAqIEB2c2k6IFZTSSBwb2ludGVyXFxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxcbiAgKlxcbiAgKiBPbiBlcnJvcjogcmV0dXJucyBlcnJvciBjb2RlIChuZWdhdGl2ZSlcXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXFxuICAqKi9cXG4tc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpXFxuK3N0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBpNDBlX3JpbmcgKipuZXh0X3JpbmdzO1xcbiBcXHRpbnQgc2l6ZTtcXG5AQCAtMTE0OTMsMTkgKzExNDk2LDIwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxcbiBcXHR9XFxuIFxcdHZzaS1cXHUwMDNlcnhfcmluZ3MgPSBuZXh0X3JpbmdzO1xcbiBcXG4tXFx0aWYgKGFsbG9jX3F2ZWN0b3JzKSB7XFxuLVxcdFxcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi9cXG4tXFx0XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycztcXG4tXFx0XFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbi1cXHRcXHRpZiAoIXZzaS1cXHUwMDNlcV92ZWN0b3JzKSB7XFxuLVxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdFxcdGdvdG8gZXJyX3ZlY3RvcnM7XFxuLVxcdFxcdH1cXG4rXFx0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xcbitcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBpNDBlX3FfdmVjdG9yICopICogdnNpLVxcdTAwM2VudW1fcV92ZWN0b3JzO1xcbitcXHR2c2ktXFx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdnNpLVxcdTAwM2VxX3ZlY3RvcnMpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBlcnJfdmVjdG9ycztcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiBcXG4gZXJyX3ZlY3RvcnM6XFxuIFxcdGtmcmVlKHZzaS1cXHUwMDNldHhfcmluZ3MpO1xcbitcXHR2c2ktXFx1MDAzZXR4X3JpbmdzID0gTlVMTDtcXG4rXFx0dnNpLVxcdTAwM2VyeF9yaW5ncyA9IE5VTEw7XFxuK1xcdHZzaS1cXHUwMDNleGRwX3JpbmdzID0gTlVMTDtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMTE1NzgsNyArMTE1ODIsNyBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGVycl9yaW5ncztcXG4gXFxuLVxcdHJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2ksIHRydWUpO1xcbitcXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBlcnJfcmluZ3M7XFxuIFxcbkBAIC0xMTYwMywxOCArMTE2MDcsMTUgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcXG4gLyoqXFxuICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJXFxuICAqIEB2c2k6IFZTSSBwb2ludGVyXFxuLSAqIEBmcmVlX3F2ZWN0b3JzOiBhIGJvb2wgdG8gc3BlY2lmeSBpZiBxX3ZlY3RvcnMgbmVlZCB0byBiZSBmcmVlZC5cXG4gICpcXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXFxuICAqIE9uIHN1Y2Nlc3M6IHJldHVybnMgMFxcbiAgKiovXFxuLXN0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGZyZWVfcXZlY3RvcnMpXFxuK3N0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdC8qIGZyZWUgdGhlIHJpbmcgYW5kIHZlY3RvciBjb250YWluZXJzICovXFxuLVxcdGlmIChmcmVlX3F2ZWN0b3JzKSB7XFxuLVxcdFxcdGtmcmVlKHZzaS1cXHUwMDNlcV92ZWN0b3JzKTtcXG4tXFx0XFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xcbi1cXHR9XFxuK1xcdGtmcmVlKHZzaS1cXHUwMDNlcV92ZWN0b3JzKTtcXG4rXFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xcbiBcXHRrZnJlZSh2c2ktXFx1MDAzZXR4X3JpbmdzKTtcXG4gXFx0dnNpLVxcdTAwM2V0eF9yaW5ncyA9IE5VTEw7XFxuIFxcdHZzaS1cXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xcbkBAIC0xMTY3NCw3ICsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdGk0MGVfcHV0X2x1bXAocGYtXFx1MDAzZWlycV9waWxlLCB2c2ktXFx1MDAzZWJhc2VfdmVjdG9yLCB2c2ktXFx1MDAzZWlkeCk7XFxuIFxcbiBcXHRiaXRtYXBfZnJlZSh2c2ktXFx1MDAzZWFmX3hkcF96Y19xcHMpO1xcbi1cXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2ksIHRydWUpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xcbiBcXHRpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpO1xcbiBcXG4gXFx0cGYtXFx1MDAzZXZzaVt2c2ktXFx1MDAzZWlkeF0gPSBOVUxMO1xcbkBAIC0xMTY5OSwxMSArMTE3MDAsMTMgQEAgc3RhdGljIHZvaWQgaTQwZV92c2lfY2xlYXJfcmluZ3Moc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcbiBcXHRpZiAodnNpLVxcdTAwM2V0eF9yaW5ncyBcXHUwMDI2XFx1MDAyNiB2c2ktXFx1MDAzZXR4X3JpbmdzWzBdKSB7XFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB2c2ktXFx1MDAzZWFsbG9jX3F1ZXVlX3BhaXJzOyBpKyspIHtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KHZzaS1cXHUwMDNldHhfcmluZ3NbaV0sIHJjdSk7XFxuK1xcdFxcdFxcdHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktXFx1MDAzZXR4X3JpbmdzW2ldO1xcbitcXG4gXFx0XFx0XFx0V1JJVEVfT05DRSh2c2ktXFx1MDAzZXR4X3JpbmdzW2ldLCBOVUxMKTtcXG4gXFx0XFx0XFx0V1JJVEVfT05DRSh2c2ktXFx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcXG4gXFx0XFx0XFx0aWYgKHZzaS1cXHUwMDNleGRwX3JpbmdzKVxcbiBcXHRcXHRcXHRcXHRXUklURV9PTkNFKHZzaS1cXHUwMDNleGRwX3JpbmdzW2ldLCBOVUxMKTtcXG4rXFx0XFx0XFx0a2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiB9XFxuQEAgLTEyMDQ2LDcgKzEyMDQ5LDggQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19xX3ZlY3RvcihzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHZfaWR4KVxcbiBcXHRjcHVtYXNrX2NvcHkoXFx1MDAyNnFfdmVjdG9yLVxcdTAwM2VhZmZpbml0eV9tYXNrLCBjcHVfcG9zc2libGVfbWFzayk7XFxuIFxcbiBcXHRpZiAodnNpLVxcdTAwM2VuZXRkZXYpXFxuLVxcdFxcdG5ldGlmX25hcGlfYWRkKHZzaS1cXHUwMDNlbmV0ZGV2LCBcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGksIGk0MGVfbmFwaV9wb2xsKTtcXG4rXFx0XFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cXHUwMDNlbmV0ZGV2LCBcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGksXFxuK1xcdFxcdFxcdFxcdCAgICAgIGk0MGVfbmFwaV9wb2xsLCB2X2lkeCk7XFxuIFxcbiBcXHQvKiB0aWUgcV92ZWN0b3IgYW5kIHZzaSB0b2dldGhlciAqL1xcbiBcXHR2c2ktXFx1MDAzZXFfdmVjdG9yc1t2X2lkeF0gPSBxX3ZlY3RvcjtcXG5AQCAtMTQyMDEsOCArMTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4gICoqL1xcbiBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIHtcXG4tXFx0aW50IHJldCA9IC1FTk9FTlQ7XFxuIFxcdHN0cnVjdCBpNDBlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0Ym9vbCByZXVzZV9pcnFfbHVtcCA9IGZhbHNlO1xcbitcXHRpbnQgcmV0ID0gLUVOT0VOVDtcXG4gXFxuIFxcdGlmICh2c2ktXFx1MDAzZXFfdmVjdG9yc1swXSkge1xcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIlZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXFxcXG5cXFwiLFxcbkBAIC0xNDIxMCw3ICsxNDIxNSwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodnNpLVxcdTAwM2ViYXNlX3ZlY3Rvcikge1xcbitcXHRpZiAodnNpLVxcdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2ViYXNlX3ZlY3RvcilcXG4rXFx0XFx0cmV1c2VfaXJxX2x1bXAgPSB0cnVlO1xcbitcXG4rXFx0aWYgKHZzaS1cXHUwMDNlYmFzZV92ZWN0b3IgXFx1MDAyNlxcdTAwMjYgIXJldXNlX2lycV9sdW1wKSB7XFxuIFxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiVlNJICVkIGhhcyBub24temVybyBiYXNlIHZlY3RvciAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0IHZzaS1cXHUwMDNlc2VpZCwgdnNpLVxcdTAwM2ViYXNlX3ZlY3Rvcik7XFxuIFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbkBAIC0xNDIzMCw2ICsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdCovXFxuIFxcdGlmICghdGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKHJldXNlX2lycV9sdW1wKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0aWYgKHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycylcXG4gXFx0XFx0dnNpLVxcdTAwM2ViYXNlX3ZlY3RvciA9IGk0MGVfZ2V0X2x1bXAocGYsIHBmLVxcdTAwM2VpcnFfcGlsZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycywgdnNpLVxcdTAwM2VpZHgpO1xcbkBAIC0xNDI1NSw3ICsxNDI2Nyw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4gICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3RcXG4gICogb24gc3VjY2Vzcywgb3RoZXJ3aXNlIHJldHVybnMgTlVMTCBvbiBmYWlsdXJlLlxcbiAgKiovXFxuLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4rc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBib29sIGxvY2tfYWNxdWlyZWQpXFxuIHtcXG4gXFx0c3RydWN0IGk0MGVfdnNpICptYWluX3ZzaTtcXG4gXFx0dTE2IGFsbG9jX3F1ZXVlX3BhaXJzO1xcbkBAIC0xNDI2OCwxMyArMTQyODEsMjIgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiBcXHRwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4gXFxuIFxcdGk0MGVfcHV0X2x1bXAocGYtXFx1MDAzZXFwX3BpbGUsIHZzaS1cXHUwMDNlYmFzZV9xdWV1ZSwgdnNpLVxcdTAwM2VpZHgpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpO1xcbiBcXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xcbiBcXG4tXFx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCBmYWxzZSk7XFxuIFxcdGk0MGVfc2V0X251bV9yaW5nc19pbl92c2kodnNpKTtcXG4tXFx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xcbitcXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBlcnJfdnNpO1xcbitcXHRcXHRnb3RvIGVycl9uZXRkZXY7XFxuK1xcbitcXHQvKiBSZWJ1aWxkIHFfdmVjdG9ycyBkdXJpbmcgVlNJIHJlaW5pdCBiZWNhdXNlIHRoZSBlZmZlY3RpdmUgY2hhbm5lbFxcbitcXHQgKiBjb3VudCBtYXkgY2hhbmdlIG51bV9xX3ZlY3RvcnMuIEtlZXAgdmVjdG9yIHRvcG9sb2d5IGFsaWduZWQgd2l0aCB0aGVcXG4rXFx0ICogcXVldWUgY29uZmlndXJhdGlvbiBhZnRlciBldGh0b29sJ3MgLnNldF9jaGFubmVscygpIGNhbGxiYWNrLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9uZXRkZXY7XFxuIFxcbiBcXHRhbGxvY19xdWV1ZV9wYWlycyA9IHZzaS1cXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgKlxcbiBcXHRcXHRcXHQgICAgKGk0MGVfZW5hYmxlZF94ZHBfdnNpKHZzaSkgPyAyIDogMSk7XFxuQEAgLTE0Mjg0LDcgKzE0MzA2LDcgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0IFxcXCJmYWlsZWQgdG8gZ2V0IHRyYWNraW5nIGZvciAlZCBxdWV1ZXMgZm9yIFZTSSAlZCBlcnIgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhbGxvY19xdWV1ZV9wYWlycywgdnNpLVxcdTAwM2VzZWlkLCByZXQpO1xcbi1cXHRcXHRnb3RvIGVycl92c2k7XFxuK1xcdFxcdGdvdG8gZXJyX3JpbmdzO1xcbiBcXHR9XFxuIFxcdHZzaS1cXHUwMDNlYmFzZV9xdWV1ZSA9IHJldDtcXG4gXFxuQEAgLTE0MzA5LDE2ICsxNDMzMSwxOSBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcbiBlcnJfcmluZ3M6XFxuIFxcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XFxuK2Vycl9uZXRkZXY6XFxuIFxcdGlmICh2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XFxuIFxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcXG4tXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRpZiAobG9ja19hY3F1aXJlZClcXG4rXFx0XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2UodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2KHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0ZnJlZV9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRcXHR2c2ktXFx1MDAzZW5ldGRldiA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbiBcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG4gXFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcXHUwMDI2cGYtXFx1MDAzZWh3LCB2c2ktXFx1MDAzZXNlaWQsIE5VTEwpO1xcbi1lcnJfdnNpOlxcbiBcXHRpNDBlX3ZzaV9jbGVhcih2c2kpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbkBAIC0xNDQ0OCwyNiArMTQ0NzMsMTcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyX25ldGRldjtcXG4gXFx0XFx0XFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQodnNpLVxcdTAwM2VuZXRkZXYsIFxcdTAwMjZwZi1cXHUwMDNlZGV2bGlua19wb3J0KTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIGVycl9kbF9wb3J0O1xcbi1cXHRcXHR2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcXG4tXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi0jaWZkZWYgQ09ORklHX0k0MEVfRENCXFxuLVxcdFxcdC8qIFNldHVwIERDQiBuZXRsaW5rIGludGVyZmFjZSAqL1xcbi1cXHRcXHRpNDBlX2RjYm5sX3NldHVwKHZzaSk7XFxuLSNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgSTQwRV9WU0lfRkRJUjpcXG4gXFx0XFx0Lyogc2V0IHVwIHZlY3RvcnMgYW5kIHJpbmdzIGlmIG5lZWRlZCAqL1xcbi1cXHRcXHRyZXQgPSBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHZzaSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gZXJyX21zaXg7XFxuLVxcbiBcXHRcXHRyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX3JpbmdzO1xcbiBcXG4rXFx0XFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRnb3RvIGVycl9xdmVjO1xcbitcXG4gXFx0XFx0LyogbWFwIGFsbCBvZiB0aGUgcmluZ3MgdG8gdGhlIHFfdmVjdG9ycyAqL1xcbiBcXHRcXHRpNDBlX3ZzaV9tYXBfcmluZ3NfdG9fdmVjdG9ycyh2c2kpO1xcbiBcXG5AQCAtMTQ0ODQsMjMgKzE0NTAwLDM3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLFxcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIGVycl9jb25maWc7XFxuIFxcdH1cXG4rXFxuK1xcdGlmICh2c2ktXFx1MDAzZW5ldGRldikge1xcbitcXHRcXHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRnb3RvIGVycl9jb25maWc7XFxuK1xcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSB0cnVlO1xcbitcXHRcXHRuZXRpZl9jYXJyaWVyX29mZih2c2ktXFx1MDAzZW5ldGRldik7XFxuKyNpZmRlZiBDT05GSUdfSTQwRV9EQ0JcXG4rXFx0XFx0LyogU2V0dXAgRENCIG5ldGxpbmsgaW50ZXJmYWNlICovXFxuK1xcdFxcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcXG4rI2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqL1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gdnNpO1xcbiBcXG4gZXJyX2NvbmZpZzpcXG4rXFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcXG4rZXJyX3F2ZWM6XFxuIFxcdGk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7XFxuIGVycl9yaW5nczpcXG4tXFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcXG4tZXJyX21zaXg6XFxuIFxcdGlmICh2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XFxuIFxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcXG4gXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXHRcXHRmcmVlX25ldGRldih2c2ktXFx1MDAzZW5ldGRldik7XFxuLVxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2ID0gTlVMTDtcXG4gXFx0fVxcbi1lcnJfZGxfcG9ydDpcXG4gXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbiBcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG4gZXJyX25ldGRldjpcXG4rXFx0aWYgKHZzaS1cXHUwMDNlbmV0ZGV2KSB7XFxuK1xcdFxcdGZyZWVfbmV0ZGV2KHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4rXFx0XFx0dnNpLVxcdTAwM2VuZXRkZXYgPSBOVUxMO1xcbitcXHR9XFxuIFxcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXFx1MDAyNnBmLVxcdTAwM2VodywgdnNpLVxcdTAwM2VzZWlkLCBOVUxMKTtcXG4gZXJyX3ZzaTpcXG4gXFx0aTQwZV92c2lfY2xlYXIodnNpKTtcXG5AQCAtMTUwMzQsNyArMTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aVxcbiBcXHRcXHRcXHRtYWluX3ZzaSA9IGk0MGVfdnNpX3NldHVwKHBmLCBJNDBFX1ZTSV9NQUlOLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHVwbGlua19zZWlkLCAwKTtcXG4gXFx0XFx0ZWxzZSBpZiAocmVpbml0KVxcbi1cXHRcXHRcXHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7XFxuK1xcdFxcdFxcdG1haW5fdnNpID0gaTQwZV92c2lfcmVpbml0X3NldHVwKG1haW5fdnNpLCBsb2NrX2FjcXVpcmVkKTtcXG4gXFx0XFx0aWYgKCFtYWluX3ZzaSkge1xcbiBcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcInNldHVwIG9mIE1BSU4gVlNJIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdGk0MGVfY2xvdWRfZmlsdGVyX2V4aXQocGYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcXG5pbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXFxuQEAgLTE1NTYsOCArMTU1Niw5IEBAIHZvaWQgaTQwZV9wdHBfc3RvcChzdHJ1Y3QgaTQwZV9wZiAqcGYpXFxuIFxcdGlmIChwZi1cXHUwMDNlcHRwX2Nsb2NrKSB7XFxuIFxcdFxcdHB0cF9jbG9ja191bnJlZ2lzdGVyKHBmLVxcdTAwM2VwdHBfY2xvY2spO1xcbiBcXHRcXHRwZi1cXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcXG4tXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXFxcblxcXCIsIF9fZnVuY19fLFxcbi1cXHRcXHRcXHQgbWFpbl92c2ktXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuK1xcdFxcdGlmIChtYWluX3ZzaSlcXG4rXFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXFxcblxcXCIsIF9fZnVuY19fLFxcbitcXHRcXHRcXHRcXHQgbWFpbl92c2ktXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChpNDBlX2lzX3B0cF9waW5fZGV2KFxcdTAwMjZwZi1cXHUwMDNlaHcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjUzOjUzLjA4ODY3ODgzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0NTU0NzI4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSTQwRVwiLFxuICAgIFwiSTQwRV9EQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpNDBlX3ZzaV9hbGxvY19hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX2ZyZWVfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzXCIsXG4gICAgXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgICBcImk0MGVfdnNpX3NldHVwXCIsXG4gICAgXCJpNDBlX3B0cF9zdG9wXCIsXG4gICAgXCJpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDo1Mzo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMTE0MDYsMTAgKzExNDA2LDE0IEBAIHN0YXRpYyB2b2lkIGk0MGVfc2VydmljZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXG4ge1xuIFx0c3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHR1MTYgcXBzO1xuIFxuIFx0c3dpdGNoICh2c2ktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBJNDBFX1ZTSV9NQUlOOlxuIFx0XHR2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgPSBwZi1cdTAwM2VudW1fbGFuX3FwcztcbitcdFx0cXBzID0gdnNpLVx1MDAzZXJlcV9xdWV1ZV9wYWlycyA/XG4rXHRcdCAgICAgIG1pbih2c2ktXHUwMDNlcmVxX3F1ZXVlX3BhaXJzLCBwZi1cdTAwM2VudW1fbGFuX3FwcykgOlxuK1x0XHQgICAgICBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiBcdFx0aWYgKCF2c2ktXHUwMDNlbnVtX3R4X2Rlc2MpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG5AQCAtMTE0MTcsNyArMTE0MjEsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV9yeF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG4gXHRcdGlmICh0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVx1MDAzZWZsYWdzKSlcbi1cdFx0XHR2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycyA9IHBmLVx1MDAzZW51bV9sYW5fbXNpeDtcbitcdFx0XHR2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycyA9IGNsYW1wKHFwcywgMSwgcGYtXHUwMDNlbnVtX2xhbl9tc2l4KTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzID0gMTtcbiBcbkBAIC0xMTQ2OSwxMiArMTE0NzMsMTEgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIC8qKlxuICAqIGk0MGVfdnNpX2FsbG9jX2FycmF5cyAtIEFsbG9jYXRlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSB2c2lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxuICAqXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXG4gICoqL1xuLXN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuK3N0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3JpbmcgKipuZXh0X3JpbmdzO1xuIFx0aW50IHNpemU7XG5AQCAtMTE0OTMsMTkgKzExNDk2LDIwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuIFx0fVxuIFx0dnNpLVx1MDAzZXJ4X3JpbmdzID0gbmV4dF9yaW5ncztcbiBcbi1cdGlmIChhbGxvY19xdmVjdG9ycykge1xuLVx0XHQvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHFfdmVjdG9yIHBvaW50ZXJzICovXG4tXHRcdHNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycztcbi1cdFx0dnNpLVx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRcdGlmICghdnNpLVx1MDAzZXFfdmVjdG9ycykge1xuLVx0XHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdFx0Z290byBlcnJfdmVjdG9ycztcbi1cdFx0fVxuK1x0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xuK1x0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzO1xuK1x0dnNpLVx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXZzaS1cdTAwM2VxX3ZlY3RvcnMpIHtcbitcdFx0cmV0ID0gLUVOT01FTTtcbitcdFx0Z290byBlcnJfdmVjdG9ycztcbiBcdH1cbiBcdHJldHVybiByZXQ7XG4gXG4gZXJyX3ZlY3RvcnM6XG4gXHRrZnJlZSh2c2ktXHUwMDNldHhfcmluZ3MpO1xuK1x0dnNpLVx1MDAzZXR4X3JpbmdzID0gTlVMTDtcbitcdHZzaS1cdTAwM2VyeF9yaW5ncyA9IE5VTEw7XG4rXHR2c2ktXHUwMDNleGRwX3JpbmdzID0gTlVMTDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTExNTc4LDcgKzExNTgyLDcgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7XG4rXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuQEAgLTExNjAzLDE4ICsxMTYwNywxNSBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKVxuIC8qKlxuICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJXG4gICogQHZzaTogVlNJIHBvaW50ZXJcbi0gKiBAZnJlZV9xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgZnJlZWQuXG4gICpcbiAgKiBPbiBlcnJvcjogcmV0dXJucyBlcnJvciBjb2RlIChuZWdhdGl2ZSlcbiAgKiBPbiBzdWNjZXNzOiByZXR1cm5zIDBcbiAgKiovXG4tc3RhdGljIHZvaWQgaTQwZV92c2lfZnJlZV9hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgZnJlZV9xdmVjdG9ycylcbitzdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHQvKiBmcmVlIHRoZSByaW5nIGFuZCB2ZWN0b3IgY29udGFpbmVycyAqL1xuLVx0aWYgKGZyZWVfcXZlY3RvcnMpIHtcbi1cdFx0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4tXHRcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuLVx0fVxuK1x0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4rXHR2c2ktXHUwMDNlcV92ZWN0b3JzID0gTlVMTDtcbiBcdGtmcmVlKHZzaS1cdTAwM2V0eF9yaW5ncyk7XG4gXHR2c2ktXHUwMDNldHhfcmluZ3MgPSBOVUxMO1xuIFx0dnNpLVx1MDAzZXJ4X3JpbmdzID0gTlVMTDtcbkBAIC0xMTY3NCw3ICsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZWlycV9waWxlLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IsIHZzaS1cdTAwM2VpZHgpO1xuIFxuIFx0Yml0bWFwX2ZyZWUodnNpLVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuLVx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTtcbitcdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSk7XG4gXHRpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpO1xuIFxuIFx0cGYtXHUwMDNldnNpW3ZzaS1cdTAwM2VpZHhdID0gTlVMTDtcbkBAIC0xMTY5OSwxMSArMTE3MDAsMTMgQEAgc3RhdGljIHZvaWQgaTQwZV92c2lfY2xlYXJfcmluZ3Moc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXG4gXHRpZiAodnNpLVx1MDAzZXR4X3JpbmdzIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNldHhfcmluZ3NbMF0pIHtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdnNpLVx1MDAzZWFsbG9jX3F1ZXVlX3BhaXJzOyBpKyspIHtcbi1cdFx0XHRrZnJlZV9yY3UodnNpLVx1MDAzZXR4X3JpbmdzW2ldLCByY3UpO1xuK1x0XHRcdHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktXHUwMDNldHhfcmluZ3NbaV07XG4rXG4gXHRcdFx0V1JJVEVfT05DRSh2c2ktXHUwMDNldHhfcmluZ3NbaV0sIE5VTEwpO1xuIFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcbiBcdFx0XHRpZiAodnNpLVx1MDAzZXhkcF9yaW5ncylcbiBcdFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXhkcF9yaW5nc1tpXSwgTlVMTCk7XG4rXHRcdFx0a2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtMTIwNDYsNyArMTIwNDksOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX3FfdmVjdG9yKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgdl9pZHgpXG4gXHRjcHVtYXNrX2NvcHkoXHUwMDI2cV92ZWN0b3ItXHUwMDNlYWZmaW5pdHlfbWFzaywgY3B1X3Bvc3NpYmxlX21hc2spO1xuIFxuIFx0aWYgKHZzaS1cdTAwM2VuZXRkZXYpXG4tXHRcdG5ldGlmX25hcGlfYWRkKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksIGk0MGVfbmFwaV9wb2xsKTtcbitcdFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksXG4rXHRcdFx0XHQgICAgICBpNDBlX25hcGlfcG9sbCwgdl9pZHgpO1xuIFxuIFx0LyogdGllIHFfdmVjdG9yIGFuZCB2c2kgdG9nZXRoZXIgKi9cbiBcdHZzaS1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdID0gcV92ZWN0b3I7XG5AQCAtMTQyMDEsOCArMTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiAgKiovXG4gc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIHtcbi1cdGludCByZXQgPSAtRU5PRU5UO1xuIFx0c3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHRib29sIHJldXNlX2lycV9sdW1wID0gZmFsc2U7XG4rXHRpbnQgcmV0ID0gLUVOT0VOVDtcbiBcbiBcdGlmICh2c2ktXHUwMDNlcV92ZWN0b3JzWzBdKSB7XG4gXHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIlZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXFxuXCIsXG5AQCAtMTQyMTAsNyArMTQyMTUsMTAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFx0XHRyZXR1cm4gLUVFWElTVDtcbiBcdH1cbiBcbi1cdGlmICh2c2ktXHUwMDNlYmFzZV92ZWN0b3IpIHtcbitcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNlYmFzZV92ZWN0b3IpXG4rXHRcdHJldXNlX2lycV9sdW1wID0gdHJ1ZTtcbitcbitcdGlmICh2c2ktXHUwMDNlYmFzZV92ZWN0b3IgXHUwMDI2XHUwMDI2ICFyZXVzZV9pcnFfbHVtcCkge1xuIFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXFxuXCIsXG4gXHRcdFx0IHZzaS1cdTAwM2VzZWlkLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IpO1xuIFx0XHRyZXR1cm4gLUVFWElTVDtcbkBAIC0xNDIzMCw2ICsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHQqL1xuIFx0aWYgKCF0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChyZXVzZV9pcnFfbHVtcClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdGlmICh2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycylcbiBcdFx0dnNpLVx1MDAzZWJhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtXHUwMDNlaXJxX3BpbGUsXG4gXHRcdFx0XHRcdFx0IHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzLCB2c2ktXHUwMDNlaWR4KTtcbkBAIC0xNDI1NSw3ICsxNDI2Nyw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gdGhlIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQgVlNJIHN3IHN0cnVjdFxuICAqIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIE5VTEwgb24gZmFpbHVyZS5cbiAgKiovXG4tc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuK3N0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbitcdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3ZzaSAqbWFpbl92c2k7XG4gXHR1MTYgYWxsb2NfcXVldWVfcGFpcnM7XG5AQCAtMTQyNjgsMTMgKzE0MjgxLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdHBmID0gdnNpLVx1MDAzZWJhY2s7XG4gXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZXFwX3BpbGUsIHZzaS1cdTAwM2ViYXNlX3F1ZXVlLCB2c2ktXHUwMDNlaWR4KTtcbitcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuK1x0aTQwZV92c2lfZnJlZV9hcnJheXModnNpKTtcbiBcbi1cdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSwgZmFsc2UpO1xuIFx0aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSh2c2kpO1xuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xuK1x0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSk7XG4gXHRpZiAocmV0KVxuLVx0XHRnb3RvIGVycl92c2k7XG4rXHRcdGdvdG8gZXJyX25ldGRldjtcbitcbitcdC8qIFJlYnVpbGQgcV92ZWN0b3JzIGR1cmluZyBWU0kgcmVpbml0IGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBjaGFubmVsXG4rXHQgKiBjb3VudCBtYXkgY2hhbmdlIG51bV9xX3ZlY3RvcnMuIEtlZXAgdmVjdG9yIHRvcG9sb2d5IGFsaWduZWQgd2l0aCB0aGVcbitcdCAqIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgZXRodG9vbCdzIC5zZXRfY2hhbm5lbHMoKSBjYWxsYmFjay5cbitcdCAqL1xuK1x0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfbmV0ZGV2O1xuIFxuIFx0YWxsb2NfcXVldWVfcGFpcnMgPSB2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgKlxuIFx0XHRcdCAgICAoaTQwZV9lbmFibGVkX3hkcF92c2kodnNpKSA/IDIgOiAxKTtcbkBAIC0xNDI4NCw3ICsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwiZmFpbGVkIHRvIGdldCB0cmFja2luZyBmb3IgJWQgcXVldWVzIGZvciBWU0kgJWQgZXJyICVkXFxuXCIsXG4gXHRcdFx0IGFsbG9jX3F1ZXVlX3BhaXJzLCB2c2ktXHUwMDNlc2VpZCwgcmV0KTtcbi1cdFx0Z290byBlcnJfdnNpO1xuK1x0XHRnb3RvIGVycl9yaW5ncztcbiBcdH1cbiBcdHZzaS1cdTAwM2ViYXNlX3F1ZXVlID0gcmV0O1xuIFxuQEAgLTE0MzA5LDE2ICsxNDMzMSwxOSBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXG4gZXJyX3JpbmdzOlxuIFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbitlcnJfbmV0ZGV2OlxuIFx0aWYgKHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCkge1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcbi1cdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4rXHRcdGlmIChsb2NrX2FjcXVpcmVkKVxuK1x0XHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKHZzaS1cdTAwM2VuZXRkZXYpO1xuK1x0XHRlbHNlXG4rXHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2ID0gTlVMTDtcbiBcdH1cbiBcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxuIFx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbiBcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXHUwMDI2cGYtXHUwMDNlaHcsIHZzaS1cdTAwM2VzZWlkLCBOVUxMKTtcbi1lcnJfdnNpOlxuIFx0aTQwZV92c2lfY2xlYXIodnNpKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbkBAIC0xNDQ0OCwyNiArMTQ0NzMsMTcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdFx0XHRnb3RvIGVycl9uZXRkZXY7XG4gXHRcdFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQodnNpLVx1MDAzZW5ldGRldiwgXHUwMDI2cGYtXHUwMDNlZGV2bGlua19wb3J0KTtcbiBcdFx0fVxuLVx0XHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBlcnJfZGxfcG9ydDtcbi1cdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbi1cdFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVx1MDAzZW5ldGRldik7XG4tI2lmZGVmIENPTkZJR19JNDBFX0RDQlxuLVx0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbi1cdFx0aTQwZV9kY2JubF9zZXR1cCh2c2kpO1xuLSNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEk0MEVfVlNJX0ZESVI6XG4gXHRcdC8qIHNldCB1cCB2ZWN0b3JzIGFuZCByaW5ncyBpZiBuZWVkZWQgKi9cbi1cdFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gZXJyX21zaXg7XG4tXG4gXHRcdHJldCA9IGk0MGVfYWxsb2NfcmluZ3ModnNpKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRnb3RvIGVycl9yaW5ncztcbiBcbitcdFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyX3F2ZWM7XG4rXG4gXHRcdC8qIG1hcCBhbGwgb2YgdGhlIHJpbmdzIHRvIHRoZSBxX3ZlY3RvcnMgKi9cbiBcdFx0aTQwZV92c2lfbWFwX3JpbmdzX3RvX3ZlY3RvcnModnNpKTtcbiBcbkBAIC0xNDQ4NCwyMyArMTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfY29uZmlnO1xuIFx0fVxuK1xuK1x0aWYgKHZzaS1cdTAwM2VuZXRkZXYpIHtcbitcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyX2NvbmZpZztcbitcdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbitcdFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVx1MDAzZW5ldGRldik7XG4rI2lmZGVmIENPTkZJR19JNDBFX0RDQlxuK1x0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbitcdFx0aTQwZV9kY2JubF9zZXR1cCh2c2kpO1xuKyNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cbitcdH1cbitcbiBcdHJldHVybiB2c2k7XG4gXG4gZXJyX2NvbmZpZzpcbitcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4rZXJyX3F2ZWM6XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuIGVycl9yaW5nczpcbi1cdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4tZXJyX21zaXg6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuIFx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbi1cdFx0ZnJlZV9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXYgPSBOVUxMO1xuIFx0fVxuLWVycl9kbF9wb3J0OlxuIFx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG4gXHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuIGVycl9uZXRkZXY6XG4rXHRpZiAodnNpLVx1MDAzZW5ldGRldikge1xuK1x0XHRmcmVlX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbitcdFx0dnNpLVx1MDAzZW5ldGRldiA9IE5VTEw7XG4rXHR9XG4gXHRpNDBlX2FxX2RlbGV0ZV9lbGVtZW50KFx1MDAyNnBmLVx1MDAzZWh3LCB2c2ktXHUwMDNlc2VpZCwgTlVMTCk7XG4gZXJyX3ZzaTpcbiBcdGk0MGVfdnNpX2NsZWFyKHZzaSk7XG5AQCAtMTUwMzQsNyArMTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aVxuIFx0XHRcdG1haW5fdnNpID0gaTQwZV92c2lfc2V0dXAocGYsIEk0MEVfVlNJX01BSU4sXG4gXHRcdFx0XHRcdFx0ICB1cGxpbmtfc2VpZCwgMCk7XG4gXHRcdGVsc2UgaWYgKHJlaW5pdClcbi1cdFx0XHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7XG4rXHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xuIFx0XHRpZiAoIW1haW5fdnNpKSB7XG4gXHRcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwic2V0dXAgb2YgTUFJTiBWU0kgZmFpbGVkXFxuXCIpO1xuIFx0XHRcdGk0MGVfY2xvdWRfZmlsdGVyX2V4aXQocGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuY1xuaW5kZXggZmY2MmI1ZjJjODE1MDQuLmNhOTNkZjRkNjc4NTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcbkBAIC0xNTU2LDggKzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0aWYgKHBmLVx1MDAzZXB0cF9jbG9jaykge1xuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihwZi1cdTAwM2VwdHBfY2xvY2spO1xuIFx0XHRwZi1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuLVx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXG5cIiwgX19mdW5jX18sXG4tXHRcdFx0IG1haW5fdnNpLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbitcdFx0aWYgKG1haW5fdnNpKVxuK1x0XHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIiVzOiByZW1vdmVkIFBIQyBvbiAlc1xcblwiLCBfX2Z1bmNfXyxcbitcdFx0XHRcdCBtYWluX3ZzaS1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHR9XG4gXG4gXHRpZiAoaTQwZV9pc19wdHBfcGluX2RldihcdTAwMjZwZi1cdTAwM2VodykpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjUzOjUzLjA4ODY4MDU0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDk1NDkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGk0MGVfbWFpbi5jYCBhbmQgYGk0MGVfcHRwLmNgIOKAkyBzcGVjaWZpY2FsbHksIGNoYW5nZXMgcmVsYXRlZCB0byBWU0kgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIHRvIGJlIGNsZWFuaW5nIHVwIFZTSSByZWluaXRpYWxpemF0aW9uLCBxdWV1ZSB2ZWN0b3IgYWxsb2NhdGlvbiwgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZy4gSSByZWNvZ25pemUgdGhpcyBhcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiSXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIFRoZSBpNDBlIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIFhMNzEwIEZhbWlseS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV2YWx1YXRlIGZ1enppbmcgcG90ZW50aWFsLiBXZSBuZWVkIHRvIGFzc2VzcyBpZiB3ZSBjYW4gZnV6eiB0aGlzLiBEb2VzIHN5emthbGxlciBvZmZlciBnb29kIHN1cHBvcnQgZm9yIGZ1enppbmcgUENJIGRldmljZXMgdmlhIHZpcnR1YWwgUENJIG9yIHNpbWlsYXIgdGVjaG5pcXVlcz8gSSByZWNhbGwgYHN5el9wY2lgIGFuZCBgc3l6X3VzYmAsIGJ1dCBQQ0kgZnV6emluZyBjYW4gYmUgdHJpY2tpZXIuIEl0IGRlcGVuZHMgb24gd2hldGhlciBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZSBpNDBlLCBvciBpZiBzeXprYWxsZXIgaXMgYWJsZSB0byB1c2UgZTEwMDBlL2k0MGUgZW11bGF0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgdGhpbmsgUUVNVSBkb2VzIGVtdWxhdGUgc29tZSBJbnRlbCBOSUNzISBJJ2QgYmV0dGVyIGNvbmZpcm0gaXQgaGFzIGk0MGUgZW11bGF0aW9uLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIHNwZWNpZmljIHByb21wdCBpcyB0YWxraW5nIGFib3V0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYnV0IEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIGk0MGUhIE5vdyB0aGF0IEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSBpNDBlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLlxuXG5NeSB0aG91Z2h0IHByb2Nlc3MgaXM6IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX0k0MEVgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCBpdCdzIGJhY2sgdG8gYSBzaW1wbGUgc2VhcmNoIGZvciBgQ09ORklHX0k0MEVgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDowMi4xMzgyMzI4MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMTE3Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJNDBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjk6Y29uZmlnIEk0MEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBYTDcxMCBGYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjUwOmNvbmZpZyBJNDBFX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2Mj1jb25maWcgSUFWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjg6Y29uZmlnIEk0MEVWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjY5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjU0OjAyLjI4ODM1NjA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MTAxMzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGk0MGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGhlcmUgaXMgYEk0MEVgLiBUaGUgcGF0Y2ggYWZmZWN0cyBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBhbmQgYGk0MGVfdnNpX3NldHVwYC4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgY2hlY2tpbmcgUUVNVSBzdXBwb3J0IGZvciBpNDBlLCBidXQgdGhlbiBJIHJlbWVtYmVyZWQgd2UncmUgbGV2ZXJhZ2luZyBzeXprYWxsZXIgYW5kIGl0cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIHRoYXQncyBub3QgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZS4gQmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLlxuXG5SaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAgYW5kIGBpNDBlX3ZzaV9zZXR1cGAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsIGR1cmluZyBkZXZpY2UgcHJvYmUgYW5kIGNvbmZpZ3VyYXRpb24uIExldCdzIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBvciBhcmUgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgb25lcy5cblxuTGV0J3Mgc2VlOiBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYCwgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgLCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCwgYGk0MGVfdnNpX3NldHVwYCwgYGk0MGVfcHRwX3N0b3BgLCBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAsIGFuZCBgaTQwZV92c2lfZnJlZV9hcnJheXNgLiBUaG9zZSBhcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgZXhhY3RseSBob3cgdGhlIGNoYW5nZXMgdG8gYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAgYW5kIGBpNDBlX3ZzaV9zZXR1cGAgaW1wYWN0IHRoZSBvdmVyYWxsIGZsb3cuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aG9zZSB0d28sIGFuZCB0aGVuIHNlZSBob3cgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG1pZ2h0IGJlIGltcGFjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjU0OjA3LjUzOTM3MTU5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMyMTQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDIwNj1zdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNjI6ICogaTQwZV92c2lfcmVpbml0X3NldHVwIC0gcmV0dXJuIGFuZCByZWFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBWU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYzLSAqIEB2c2k6IHBvaW50ZXIgdG8gdGhlIHZzaS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNjktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNzA6c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNTAwNT1zdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aXJlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTUwNjYtXFx0XFx0ZWxzZSBpZiAocmVpbml0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTUwNjc6XFx0XFx0XFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTUwNjgtXFx0XFx0aWYgKCFtYWluX3ZzaSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDowNy42Mjc2OTgzMzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODI4Nzc0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gIGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfZnJlZV9hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBgaTQwZV92c2lfc2V0dXBgLCBgaTQwZV9wdHBfc3RvcGAsIGFuZCBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAg4oCTIHRob3NlIGFyZSBhbGwgZXhjZWxsZW50IGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgZm9jdXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRoYXQgaW1wYWN0IHRoZXNlIGZ1bmN0aW9ucy5cblxuQWhhLCBgQ09ORklHX0k0MEVgIGlzIHRoZSBtYWluIG9uZSwgYnV0IHRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgc2VjdGlvbiByZWZlcmVuY2luZyBgQ09ORklHX0k0MEVfRENCYC4gIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uOiBpdCBzZWVtcyBsaWtlIGBpNDBlX2RjYm5sX3NldHVwYCBpcyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0k0MEVfRENCYC4gU28gSSdsbCBpbmNsdWRlIGBJNDBFX0RDQmAgdG9vLCBqdXN0IHRvIGJlIGNvbXByZWhlbnNpdmUgYW5kIGNvdmVyIHRoYXQgY29uZGl0aW9uYWwgcGF0aC4gSXQncyBhIGJvb2xlYW4sIHdoaWNoIGlzIGdvb2QgdG8ga25vdywgc28gSSdsbCBiZSBzdXJlIHRvIGhhbmRsZSB0aGF0LiBJIHdhbnQgdG8gaW5jbHVkZSBhbGwgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuXG5cbkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGJvdGggYEk0MEVgIGFuZCBgSTQwRV9EQ0JgLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmlwZSBmb3IgZnV6emluZy4gSSdtIHNhdGlzZmllZCB0aGF0IEkndmUgaWRlbnRpZmllZCBhbGwgdGhlIGtleSBhcmVhcy5cblxuU28sIGxldCBtZSBzb2xpZGlmeSB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOlxuXG4qICAgYGk0MGVfdnNpX2FsbG9jX2FycmF5c2BcbiogICBgaTQwZV92c2lfZnJlZV9hcnJheXNgXG4qICAgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgXG4qICAgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGBcbiogICBgaTQwZV92c2lfc2V0dXBgXG4qICAgYGk0MGVfcHRwX3N0b3BgXG4qICAgYGk0MGVfc2V0X251bV9yaW5nc19pbl92c2lgXG5cbkkgY2FuIGNhbGwgc2V0LXJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMwLCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDoxNS40NTY0NzU1MDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjcxNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJNDBFXCIsXG4gICAgXCJJNDBFX0RDQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImk0MGVfdnNpX2FsbG9jX2FycmF5c1wiLFxuICAgIFwiaTQwZV92c2lfZnJlZV9hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX3NldHVwX3ZlY3RvcnNcIixcbiAgICBcImk0MGVfdnNpX3JlaW5pdF9zZXR1cFwiLFxuICAgIFwiaTQwZV92c2lfc2V0dXBcIixcbiAgICBcImk0MGVfcHRwX3N0b3BcIixcbiAgICBcImk0MGVfc2V0X251bV9yaW5nc19pbl92c2lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkk0MEVcIixcbiAgICBcIkk0MEVfRENCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaTQwZV92c2lfYWxsb2NfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9mcmVlX2FycmF5c1wiLFxuICAgIFwiaTQwZV92c2lfc2V0dXBfdmVjdG9yc1wiLFxuICAgIFwiaTQwZV92c2lfcmVpbml0X3NldHVwXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cFwiLFxuICAgIFwiaTQwZV9wdHBfc3RvcFwiLFxuICAgIFwiaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBWU0kgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGxvZ2ljIGluIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgaW5jbHVkaW5nIGFycmF5IGFsbG9jYXRpb24sIHZlY3RvciBzZXR1cCwgYW5kIGVycm9yIGhhbmRsaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBkcml2ZXIgY29kZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHZpcnR1YWwgUENJIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpttzn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 20:42:58 +0000 UTC FinishedAt: 2026-07-01 20:54:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "I40E", "I40E_DCB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "I40E", "I40E_DCB" ], "series_id": "5354a32e-cb93-4eda-89be-a19a739deee0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "i40e_vsi_alloc_arrays", "i40e_vsi_free_arrays", "i40e_vsi_setup_vectors", "i40e_vsi_reinit_setup", "i40e_vsi_setup", "i40e_ptp_stop", "i40e_set_num_rings_in_vsi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0k0MEUmIzM0OywKICAgICYjMzQ7STQwRV9EQ0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpNDBlX3ZzaV9hbGxvY19hcnJheXMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfZnJlZV9hcnJheXMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfc2V0dXBfdmVjdG9ycyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9yZWluaXRfc2V0dXAmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfc2V0dXAmIzM0OywKICAgICYjMzQ7aTQwZV9wdHBfc3RvcCYjMzQ7LAogICAgJiMzNDtpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBWU0kgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGxvZ2ljIGluIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgaW5jbHVkaW5nIGFycmF5IGFsbG9jYXRpb24sIHZlY3RvciBzZXR1cCwgYW5kIGVycm9yIGhhbmRsaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBkcml2ZXIgY29kZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHZpcnR1YWwgUENJIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDo1Mzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjhhMjNiZDk5YmQxMjJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xuQEAgLTExNDA2LDEwICYjNDM7MTE0MDYsMTQgQEAgc3RhdGljIHZvaWQgaTQwZV9zZXJ2aWNlX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktXHUwMDNlYmFjaztcbiYjNDM7XHR1MTYgcXBzO1xuIFxuIFx0c3dpdGNoICh2c2ktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBJNDBFX1ZTSV9NQUlOOlxuIFx0XHR2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgPSBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiYjNDM7XHRcdHFwcyA9IHZzaS1cdTAwM2VyZXFfcXVldWVfcGFpcnMgP1xuJiM0MztcdFx0ICAgICAgbWluKHZzaS1cdTAwM2VyZXFfcXVldWVfcGFpcnMsIHBmLVx1MDAzZW51bV9sYW5fcXBzKSA6XG4mIzQzO1x0XHQgICAgICBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiBcdFx0aWYgKCF2c2ktXHUwMDNlbnVtX3R4X2Rlc2MpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG5AQCAtMTE0MTcsNyAmIzQzOzExNDIxLDcgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFx0XHRcdHZzaS1cdTAwM2VudW1fcnhfZGVzYyA9IEFMSUdOKEk0MEVfREVGQVVMVF9OVU1fREVTQ1JJUFRPUlMsXG4gXHRcdFx0XHRcdFx0IEk0MEVfUkVRX0RFU0NSSVBUT1JfTVVMVElQTEUpO1xuIFx0XHRpZiAodGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi1cdTAwM2VmbGFncykpXG4tXHRcdFx0dnNpLVx1MDAzZW51bV9xX3ZlY3RvcnMgPSBwZi1cdTAwM2VudW1fbGFuX21zaXg7XG4mIzQzO1x0XHRcdHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzID0gY2xhbXAocXBzLCAxLCBwZi1cdTAwM2VudW1fbGFuX21zaXgpO1xuIFx0XHRlbHNlXG4gXHRcdFx0dnNpLVx1MDAzZW51bV9xX3ZlY3RvcnMgPSAxO1xuIFxuQEAgLTExNDY5LDEyICYjNDM7MTE0NzMsMTEgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIC8qKlxuICAqIGk0MGVfdnNpX2FsbG9jX2FycmF5cyAtIEFsbG9jYXRlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSB2c2lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxuICAqXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXG4gICoqL1xuLXN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuJiM0MztzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHRzdHJ1Y3QgaTQwZV9yaW5nICoqbmV4dF9yaW5ncztcbiBcdGludCBzaXplO1xuQEAgLTExNDkzLDE5ICYjNDM7MTE0OTYsMjAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpXG4gXHR9XG4gXHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBuZXh0X3JpbmdzO1xuIFxuLVx0aWYgKGFsbG9jX3F2ZWN0b3JzKSB7XG4tXHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi9cbi1cdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzO1xuLVx0XHR2c2ktXHUwMDNlcV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbi1cdFx0aWYgKCF2c2ktXHUwMDNlcV92ZWN0b3JzKSB7XG4tXHRcdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0XHRnb3RvIGVycl92ZWN0b3JzO1xuLVx0XHR9XG4mIzQzO1x0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xuJiM0MztcdHNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycztcbiYjNDM7XHR2c2ktXHUwMDNlcV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXZzaS1cdTAwM2VxX3ZlY3RvcnMpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIGVycl92ZWN0b3JzO1xuIFx0fVxuIFx0cmV0dXJuIHJldDtcbiBcbiBlcnJfdmVjdG9yczpcbiBcdGtmcmVlKHZzaS1cdTAwM2V0eF9yaW5ncyk7XG4mIzQzO1x0dnNpLVx1MDAzZXR4X3JpbmdzID0gTlVMTDtcbiYjNDM7XHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xuJiM0MztcdHZzaS1cdTAwM2V4ZHBfcmluZ3MgPSBOVUxMO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMTE1NzgsNyAmIzQzOzExNTgyLDcgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7XG4mIzQzO1x0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGVycl9yaW5ncztcbiBcbkBAIC0xMTYwMywxOCAmIzQzOzExNjA3LDE1IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfbWVtX2FsbG9jKHN0cnVjdCBpNDBlX3BmICpwZiwgZW51bSBpNDBlX3ZzaV90eXBlIHR5cGUpXG4gLyoqXG4gICogaTQwZV92c2lfZnJlZV9hcnJheXMgLSBGcmVlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSBWU0lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBmcmVlX3F2ZWN0b3JzOiBhIGJvb2wgdG8gc3BlY2lmeSBpZiBxX3ZlY3RvcnMgbmVlZCB0byBiZSBmcmVlZC5cbiAgKlxuICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKVxuICAqIE9uIHN1Y2Nlc3M6IHJldHVybnMgMFxuICAqKi9cbi1zdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBmcmVlX3F2ZWN0b3JzKVxuJiM0MztzdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHQvKiBmcmVlIHRoZSByaW5nIGFuZCB2ZWN0b3IgY29udGFpbmVycyAqL1xuLVx0aWYgKGZyZWVfcXZlY3RvcnMpIHtcbi1cdFx0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4tXHRcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuLVx0fVxuJiM0MztcdGtmcmVlKHZzaS1cdTAwM2VxX3ZlY3RvcnMpO1xuJiM0MztcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuIFx0a2ZyZWUodnNpLVx1MDAzZXR4X3JpbmdzKTtcbiBcdHZzaS1cdTAwM2V0eF9yaW5ncyA9IE5VTEw7XG4gXHR2c2ktXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xuQEAgLTExNjc0LDcgJiM0MzsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZWlycV9waWxlLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IsIHZzaS1cdTAwM2VpZHgpO1xuIFxuIFx0Yml0bWFwX2ZyZWUodnNpLVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuLVx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTtcbiYjNDM7XHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xuIFx0aTQwZV9jbGVhcl9yc3NfY29uZmlnX3VzZXIodnNpKTtcbiBcbiBcdHBmLVx1MDAzZXZzaVt2c2ktXHUwMDNlaWR4XSA9IE5VTEw7XG5AQCAtMTE2OTksMTEgJiM0MzsxMTcwMCwxMyBAQCBzdGF0aWMgdm9pZCBpNDBlX3ZzaV9jbGVhcl9yaW5ncyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcbiBcdGlmICh2c2ktXHUwMDNldHhfcmluZ3MgXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1swXSkge1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0a2ZyZWVfcmN1KHZzaS1cdTAwM2V0eF9yaW5nc1tpXSwgcmN1KTtcbiYjNDM7XHRcdFx0c3RydWN0IGk0MGVfcmluZyAqdHhfcmluZyA9IHZzaS1cdTAwM2V0eF9yaW5nc1tpXTtcbiYjNDM7XG4gXHRcdFx0V1JJVEVfT05DRSh2c2ktXHUwMDNldHhfcmluZ3NbaV0sIE5VTEwpO1xuIFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcbiBcdFx0XHRpZiAodnNpLVx1MDAzZXhkcF9yaW5ncylcbiBcdFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXhkcF9yaW5nc1tpXSwgTlVMTCk7XG4mIzQzO1x0XHRcdGtmcmVlX3JjdSh0eF9yaW5nLCByY3UpO1xuIFx0XHR9XG4gXHR9XG4gfVxuQEAgLTEyMDQ2LDcgJiM0MzsxMjA0OSw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IGk0MGVfdnNpICp2c2ksIGludCB2X2lkeClcbiBcdGNwdW1hc2tfY29weShcdTAwMjZxX3ZlY3Rvci1cdTAwM2VhZmZpbml0eV9tYXNrLCBjcHVfcG9zc2libGVfbWFzayk7XG4gXG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldilcbi1cdFx0bmV0aWZfbmFwaV9hZGQodnNpLVx1MDAzZW5ldGRldiwgXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSwgaTQwZV9uYXBpX3BvbGwpO1xuJiM0MztcdFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksXG4mIzQzO1x0XHRcdFx0ICAgICAgaTQwZV9uYXBpX3BvbGwsIHZfaWR4KTtcbiBcbiBcdC8qIHRpZSBxX3ZlY3RvciBhbmQgdnNpIHRvZ2V0aGVyICovXG4gXHR2c2ktXHUwMDNlcV92ZWN0b3JzW3ZfaWR4XSA9IHFfdmVjdG9yO1xuQEAgLTE0MjAxLDggJiM0MzsxNDIwNSw5IEBAIGludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuICAqKi9cbiBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4ge1xuLVx0aW50IHJldCA9IC1FTk9FTlQ7XG4gXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktXHUwMDNlYmFjaztcbiYjNDM7XHRib29sIHJldXNlX2lycV9sdW1wID0gZmFsc2U7XG4mIzQzO1x0aW50IHJldCA9IC1FTk9FTlQ7XG4gXG4gXHRpZiAodnNpLVx1MDAzZXFfdmVjdG9yc1swXSkge1xuIFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VlNJICVkIGhhcyBleGlzdGluZyBxX3ZlY3RvcnNcXG5cJiMzNDssXG5AQCAtMTQyMTAsNyAmIzQzOzE0MjE1LDEwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0cmV0dXJuIC1FRVhJU1Q7XG4gXHR9XG4gXG4tXHRpZiAodnNpLVx1MDAzZWJhc2VfdmVjdG9yKSB7XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2ViYXNlX3ZlY3RvcilcbiYjNDM7XHRcdHJldXNlX2lycV9sdW1wID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2ViYXNlX3ZlY3RvciBcdTAwMjZcdTAwMjYgIXJldXNlX2lycV9sdW1wKSB7XG4gXHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCB2c2ktXHUwMDNlc2VpZCwgdnNpLVx1MDAzZWJhc2VfdmVjdG9yKTtcbiBcdFx0cmV0dXJuIC1FRVhJU1Q7XG5AQCAtMTQyMzAsNiAmIzQzOzE0MjM4LDEwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdCovXG4gXHRpZiAoIXRlc3RfYml0KEk0MEVfRkxBR19NU0lYX0VOQSwgcGYtXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocmV1c2VfaXJxX2x1bXApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdGlmICh2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycylcbiBcdFx0dnNpLVx1MDAzZWJhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtXHUwMDNlaXJxX3BpbGUsXG4gXHRcdFx0XHRcdFx0IHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzLCB2c2ktXHUwMDNlaWR4KTtcbkBAIC0xNDI1NSw3ICYjNDM7MTQyNjcsOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3RcbiAgKiBvbiBzdWNjZXNzLCBvdGhlcndpc2UgcmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuXG4gICoqL1xuLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiYjNDM7c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3ZzaSAqbWFpbl92c2k7XG4gXHR1MTYgYWxsb2NfcXVldWVfcGFpcnM7XG5AQCAtMTQyNjgsMTMgJiM0MzsxNDI4MSwyMiBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRwZiA9IHZzaS1cdTAwM2ViYWNrO1xuIFxuIFx0aTQwZV9wdXRfbHVtcChwZi1cdTAwM2VxcF9waWxlLCB2c2ktXHUwMDNlYmFzZV9xdWV1ZSwgdnNpLVx1MDAzZWlkeCk7XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbiBcdGk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9hcnJheXModnNpKTtcbiBcbi1cdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSwgZmFsc2UpO1xuIFx0aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSh2c2kpO1xuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xuJiM0MztcdHJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2kpO1xuIFx0aWYgKHJldClcbi1cdFx0Z290byBlcnJfdnNpO1xuJiM0MztcdFx0Z290byBlcnJfbmV0ZGV2O1xuJiM0MztcbiYjNDM7XHQvKiBSZWJ1aWxkIHFfdmVjdG9ycyBkdXJpbmcgVlNJIHJlaW5pdCBiZWNhdXNlIHRoZSBlZmZlY3RpdmUgY2hhbm5lbFxuJiM0MztcdCAqIGNvdW50IG1heSBjaGFuZ2UgbnVtX3FfdmVjdG9ycy4gS2VlcCB2ZWN0b3IgdG9wb2xvZ3kgYWxpZ25lZCB3aXRoIHRoZVxuJiM0MztcdCAqIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgZXRodG9vbCYjMzk7cyAuc2V0X2NoYW5uZWxzKCkgY2FsbGJhY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycl9uZXRkZXY7XG4gXG4gXHRhbGxvY19xdWV1ZV9wYWlycyA9IHZzaS1cdTAwM2VhbGxvY19xdWV1ZV9wYWlycyAqXG4gXHRcdFx0ICAgIChpNDBlX2VuYWJsZWRfeGRwX3ZzaSh2c2kpID8gMiA6IDEpO1xuQEAgLTE0Mjg0LDcgJiM0MzsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdHJhY2tpbmcgZm9yICVkIHF1ZXVlcyBmb3IgVlNJICVkIGVyciAlZFxcblwmIzM0OyxcbiBcdFx0XHQgYWxsb2NfcXVldWVfcGFpcnMsIHZzaS1cdTAwM2VzZWlkLCByZXQpO1xuLVx0XHRnb3RvIGVycl92c2k7XG4mIzQzO1x0XHRnb3RvIGVycl9yaW5ncztcbiBcdH1cbiBcdHZzaS1cdTAwM2ViYXNlX3F1ZXVlID0gcmV0O1xuIFxuQEAgLTE0MzA5LDE2ICYjNDM7MTQzMzEsMTkgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFxuIGVycl9yaW5nczpcbiBcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4mIzQzO2Vycl9uZXRkZXY6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuLVx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRcdGlmIChsb2NrX2FjcXVpcmVkKVxuJiM0MztcdFx0XHR1bnJlZ2lzdGVyX25ldGRldmljZSh2c2ktXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2ID0gTlVMTDtcbiBcdH1cbiBcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxuIFx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbiBcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXHUwMDI2cGYtXHUwMDNlaHcsIHZzaS1cdTAwM2VzZWlkLCBOVUxMKTtcbi1lcnJfdnNpOlxuIFx0aTQwZV92c2lfY2xlYXIodnNpKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbkBAIC0xNDQ0OCwyNiAmIzQzOzE0NDczLDE3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLFxuIFx0XHRcdFx0Z290byBlcnJfbmV0ZGV2O1xuIFx0XHRcdFNFVF9ORVRERVZfREVWTElOS19QT1JUKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnBmLVx1MDAzZWRldmxpbmtfcG9ydCk7XG4gXHRcdH1cbi1cdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gZXJyX2RsX3BvcnQ7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IHRydWU7XG4tXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHZzaS1cdTAwM2VuZXRkZXYpO1xuLSNpZmRlZiBDT05GSUdfSTQwRV9EQ0Jcbi1cdFx0LyogU2V0dXAgRENCIG5ldGxpbmsgaW50ZXJmYWNlICovXG4tXHRcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcbi0jZW5kaWYgLyogQ09ORklHX0k0MEVfRENCICovXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBJNDBFX1ZTSV9GRElSOlxuIFx0XHQvKiBzZXQgdXAgdmVjdG9ycyBhbmQgcmluZ3MgaWYgbmVlZGVkICovXG4tXHRcdHJldCA9IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnModnNpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIGVycl9tc2l4O1xuLVxuIFx0XHRyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfcmluZ3M7XG4gXG4mIzQzO1x0XHRyZXQgPSBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHZzaSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIGVycl9xdmVjO1xuJiM0MztcbiBcdFx0LyogbWFwIGFsbCBvZiB0aGUgcmluZ3MgdG8gdGhlIHFfdmVjdG9ycyAqL1xuIFx0XHRpNDBlX3ZzaV9tYXBfcmluZ3NfdG9fdmVjdG9ycyh2c2kpO1xuIFxuQEAgLTE0NDg0LDIzICYjNDM7MTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfY29uZmlnO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAodnNpLVx1MDAzZW5ldGRldikge1xuJiM0MztcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJfY29uZmlnO1xuJiM0MztcdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbiYjNDM7XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MzsjaWZkZWYgQ09ORklHX0k0MEVfRENCXG4mIzQzO1x0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbiYjNDM7XHRcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcbiYjNDM7I2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqL1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gdnNpO1xuIFxuIGVycl9jb25maWc6XG4mIzQzO1x0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbiYjNDM7ZXJyX3F2ZWM6XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuIGVycl9yaW5nczpcbi1cdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4tZXJyX21zaXg6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuIFx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbi1cdFx0ZnJlZV9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXYgPSBOVUxMO1xuIFx0fVxuLWVycl9kbF9wb3J0OlxuIFx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG4gXHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuIGVycl9uZXRkZXY6XG4mIzQzO1x0aWYgKHZzaS1cdTAwM2VuZXRkZXYpIHtcbiYjNDM7XHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuJiM0MztcdFx0dnNpLVx1MDAzZW5ldGRldiA9IE5VTEw7XG4mIzQzO1x0fVxuIFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcdTAwMjZwZi1cdTAwM2VodywgdnNpLVx1MDAzZXNlaWQsIE5VTEwpO1xuIGVycl92c2k6XG4gXHRpNDBlX3ZzaV9jbGVhcih2c2kpO1xuQEAgLTE1MDM0LDcgJiM0MzsxNTA2NCw3IEBAIHN0YXRpYyBpbnQgaTQwZV9zZXR1cF9wZl9zd2l0Y2goc3RydWN0IGk0MGVfcGYgKnBmLCBib29sIHJlaW5pdCwgYm9vbCBsb2NrX2FjcXVpXG4gXHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9zZXR1cChwZiwgSTQwRV9WU0lfTUFJTixcbiBcdFx0XHRcdFx0XHQgIHVwbGlua19zZWlkLCAwKTtcbiBcdFx0ZWxzZSBpZiAocmVpbml0KVxuLVx0XHRcdG1haW5fdnNpID0gaTQwZV92c2lfcmVpbml0X3NldHVwKG1haW5fdnNpKTtcbiYjNDM7XHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xuIFx0XHRpZiAoIW1haW5fdnNpKSB7XG4gXHRcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3NldHVwIG9mIE1BSU4gVlNJIGZhaWxlZFxcblwmIzM0Oyk7XG4gXHRcdFx0aTQwZV9jbG91ZF9maWx0ZXJfZXhpdChwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXG5pbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuY1xuQEAgLTE1NTYsOCAmIzQzOzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0aWYgKHBmLVx1MDAzZXB0cF9jbG9jaykge1xuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihwZi1cdTAwM2VwdHBfY2xvY2spO1xuIFx0XHRwZi1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuLVx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IHJlbW92ZWQgUEhDIG9uICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbi1cdFx0XHQgbWFpbl92c2ktXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0aWYgKG1haW5fdnNpKVxuJiM0MztcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IHJlbW92ZWQgUEhDIG9uICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbiYjNDM7XHRcdFx0XHQgbWFpbl92c2ktXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuIFx0fVxuIFxuIFx0aWYgKGk0MGVfaXNfcHRwX3Bpbl9kZXYoXHUwMDI2cGYtXHUwMDNlaHcpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7STQwRSYjMzQ7LAogICAgJiMzNDtJNDBFX0RDQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2k0MGVfdnNpX2FsbG9jX2FycmF5cyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9mcmVlX2FycmF5cyYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3JlaW5pdF9zZXR1cCYjMzQ7LAogICAgJiMzNDtpNDBlX3ZzaV9zZXR1cCYjMzQ7LAogICAgJiMzNDtpNDBlX3B0cF9zdG9wJiMzNDssCiAgICAmIzM0O2k0MGVfc2V0X251bV9yaW5nc19pbl92c2kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZjNjZiMTM1OWQwNTg0MjhiYmRkMDE1NmYzYzQ4NTc3NzdhMWVkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMjA6NTM6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwppbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwpAQCAtMTE0MDYsMTAgJiM0MzsxMTQwNiwxNCBAQCBzdGF0aWMgdm9pZCBpNDBlX3NlcnZpY2VfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpCiB7CiAJc3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLSZndDtiYWNrOwomIzQzOwl1MTYgcXBzOwogCiAJc3dpdGNoICh2c2ktJmd0O3R5cGUpIHsKIAljYXNlIEk0MEVfVlNJX01BSU46CiAJCXZzaS0mZ3Q7YWxsb2NfcXVldWVfcGFpcnMgPSBwZi0mZ3Q7bnVtX2xhbl9xcHM7CiYjNDM7CQlxcHMgPSB2c2ktJmd0O3JlcV9xdWV1ZV9wYWlycyA/CiYjNDM7CQkgICAgICBtaW4odnNpLSZndDtyZXFfcXVldWVfcGFpcnMsIHBmLSZndDtudW1fbGFuX3FwcykgOgomIzQzOwkJICAgICAgcGYtJmd0O251bV9sYW5fcXBzOwogCQlpZiAoIXZzaS0mZ3Q7bnVtX3R4X2Rlc2MpCiAJCQl2c2ktJmd0O251bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUywKIAkJCQkJCSBJNDBFX1JFUV9ERVNDUklQVE9SX01VTFRJUExFKTsKQEAgLTExNDE3LDcgJiM0MzsxMTQyMSw3IEBAIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAkJCXZzaS0mZ3Q7bnVtX3J4X2Rlc2MgPSBBTElHTihJNDBFX0RFRkFVTFRfTlVNX0RFU0NSSVBUT1JTLAogCQkJCQkJIEk0MEVfUkVRX0RFU0NSSVBUT1JfTVVMVElQTEUpOwogCQlpZiAodGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi0mZ3Q7ZmxhZ3MpKQotCQkJdnNpLSZndDtudW1fcV92ZWN0b3JzID0gcGYtJmd0O251bV9sYW5fbXNpeDsKJiM0MzsJCQl2c2ktJmd0O251bV9xX3ZlY3RvcnMgPSBjbGFtcChxcHMsIDEsIHBmLSZndDtudW1fbGFuX21zaXgpOwogCQllbHNlCiAJCQl2c2ktJmd0O251bV9xX3ZlY3RvcnMgPSAxOwogCkBAIC0xMTQ2OSwxMiAmIzQzOzExNDczLDExIEBAIHN0YXRpYyBpbnQgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIC8qKgogICogaTQwZV92c2lfYWxsb2NfYXJyYXlzIC0gQWxsb2NhdGUgcXVldWUgYW5kIHZlY3RvciBwb2ludGVyIGFycmF5cyBmb3IgdGhlIHZzaQogICogQHZzaTogVlNJIHBvaW50ZXIKLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLgogICoKICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKQogICogT24gc3VjY2VzczogcmV0dXJucyAwCiAgKiovCi1zdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBhbGxvY19xdmVjdG9ycykKJiM0MztzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIHsKIAlzdHJ1Y3QgaTQwZV9yaW5nICoqbmV4dF9yaW5nczsKIAlpbnQgc2l6ZTsKQEAgLTExNDkzLDE5ICYjNDM7MTE0OTYsMjAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpCiAJfQogCXZzaS0mZ3Q7cnhfcmluZ3MgPSBuZXh0X3JpbmdzOwogCi0JaWYgKGFsbG9jX3F2ZWN0b3JzKSB7Ci0JCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi8KLQkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS0mZ3Q7bnVtX3FfdmVjdG9yczsKLQkJdnNpLSZndDtxX3ZlY3RvcnMgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwotCQlpZiAoIXZzaS0mZ3Q7cV92ZWN0b3JzKSB7Ci0JCQlyZXQgPSAtRU5PTUVNOwotCQkJZ290byBlcnJfdmVjdG9yczsKLQkJfQomIzQzOwkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHFfdmVjdG9yIHBvaW50ZXJzICovCiYjNDM7CXNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktJmd0O251bV9xX3ZlY3RvcnM7CiYjNDM7CXZzaS0mZ3Q7cV92ZWN0b3JzID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF2c2ktJmd0O3FfdmVjdG9ycykgewomIzQzOwkJcmV0ID0gLUVOT01FTTsKJiM0MzsJCWdvdG8gZXJyX3ZlY3RvcnM7CiAJfQogCXJldHVybiByZXQ7CiAKIGVycl92ZWN0b3JzOgogCWtmcmVlKHZzaS0mZ3Q7dHhfcmluZ3MpOwomIzQzOwl2c2ktJmd0O3R4X3JpbmdzID0gTlVMTDsKJiM0MzsJdnNpLSZndDtyeF9yaW5ncyA9IE5VTEw7CiYjNDM7CXZzaS0mZ3Q7eGRwX3JpbmdzID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMTU3OCw3ICYjNDM7MTE1ODIsNyBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3JpbmdzOwogCi0JcmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7CiYjNDM7CXJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2kpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3JpbmdzOwogCkBAIC0xMTYwMywxOCAmIzQzOzExNjA3LDE1IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfbWVtX2FsbG9jKHN0cnVjdCBpNDBlX3BmICpwZiwgZW51bSBpNDBlX3ZzaV90eXBlIHR5cGUpCiAvKioKICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJCiAgKiBAdnNpOiBWU0kgcG9pbnRlcgotICogQGZyZWVfcXZlY3RvcnM6IGEgYm9vbCB0byBzcGVjaWZ5IGlmIHFfdmVjdG9ycyBuZWVkIHRvIGJlIGZyZWVkLgogICoKICAqIE9uIGVycm9yOiByZXR1cm5zIGVycm9yIGNvZGUgKG5lZ2F0aXZlKQogICogT24gc3VjY2VzczogcmV0dXJucyAwCiAgKiovCi1zdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgYm9vbCBmcmVlX3F2ZWN0b3JzKQomIzQzO3N0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKQogewogCS8qIGZyZWUgdGhlIHJpbmcgYW5kIHZlY3RvciBjb250YWluZXJzICovCi0JaWYgKGZyZWVfcXZlY3RvcnMpIHsKLQkJa2ZyZWUodnNpLSZndDtxX3ZlY3RvcnMpOwotCQl2c2ktJmd0O3FfdmVjdG9ycyA9IE5VTEw7Ci0JfQomIzQzOwlrZnJlZSh2c2ktJmd0O3FfdmVjdG9ycyk7CiYjNDM7CXZzaS0mZ3Q7cV92ZWN0b3JzID0gTlVMTDsKIAlrZnJlZSh2c2ktJmd0O3R4X3JpbmdzKTsKIAl2c2ktJmd0O3R4X3JpbmdzID0gTlVMTDsKIAl2c2ktJmd0O3J4X3JpbmdzID0gTlVMTDsKQEAgLTExNjc0LDcgJiM0MzsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJaTQwZV9wdXRfbHVtcChwZi0mZ3Q7aXJxX3BpbGUsIHZzaS0mZ3Q7YmFzZV92ZWN0b3IsIHZzaS0mZ3Q7aWR4KTsKIAogCWJpdG1hcF9mcmVlKHZzaS0mZ3Q7YWZfeGRwX3pjX3Fwcyk7Ci0JaTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTsKJiM0MzsJaTQwZV92c2lfZnJlZV9hcnJheXModnNpKTsKIAlpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpOwogCiAJcGYtJmd0O3ZzaVt2c2ktJmd0O2lkeF0gPSBOVUxMOwpAQCAtMTE2OTksMTEgJiM0MzsxMTcwMCwxMyBAQCBzdGF0aWMgdm9pZCBpNDBlX3ZzaV9jbGVhcl9yaW5ncyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAogCWlmICh2c2ktJmd0O3R4X3JpbmdzICZhbXA7JmFtcDsgdnNpLSZndDt0eF9yaW5nc1swXSkgewogCQlmb3IgKGkgPSAwOyBpICZsdDsgdnNpLSZndDthbGxvY19xdWV1ZV9wYWlyczsgaSYjNDM7JiM0MzspIHsKLQkJCWtmcmVlX3JjdSh2c2ktJmd0O3R4X3JpbmdzW2ldLCByY3UpOwomIzQzOwkJCXN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktJmd0O3R4X3JpbmdzW2ldOwomIzQzOwogCQkJV1JJVEVfT05DRSh2c2ktJmd0O3R4X3JpbmdzW2ldLCBOVUxMKTsKIAkJCVdSSVRFX09OQ0UodnNpLSZndDtyeF9yaW5nc1tpXSwgTlVMTCk7CiAJCQlpZiAodnNpLSZndDt4ZHBfcmluZ3MpCiAJCQkJV1JJVEVfT05DRSh2c2ktJmd0O3hkcF9yaW5nc1tpXSwgTlVMTCk7CiYjNDM7CQkJa2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7CiAJCX0KIAl9CiB9CkBAIC0xMjA0Niw3ICYjNDM7MTIwNDksOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX3FfdmVjdG9yKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgdl9pZHgpCiAJY3B1bWFza19jb3B5KCZhbXA7cV92ZWN0b3ItJmd0O2FmZmluaXR5X21hc2ssIGNwdV9wb3NzaWJsZV9tYXNrKTsKIAogCWlmICh2c2ktJmd0O25ldGRldikKLQkJbmV0aWZfbmFwaV9hZGQodnNpLSZndDtuZXRkZXYsICZhbXA7cV92ZWN0b3ItJmd0O25hcGksIGk0MGVfbmFwaV9wb2xsKTsKJiM0MzsJCW5ldGlmX25hcGlfYWRkX2NvbmZpZyh2c2ktJmd0O25ldGRldiwgJmFtcDtxX3ZlY3Rvci0mZ3Q7bmFwaSwKJiM0MzsJCQkJICAgICAgaTQwZV9uYXBpX3BvbGwsIHZfaWR4KTsKIAogCS8qIHRpZSBxX3ZlY3RvciBhbmQgdnNpIHRvZ2V0aGVyICovCiAJdnNpLSZndDtxX3ZlY3RvcnNbdl9pZHhdID0gcV92ZWN0b3I7CkBAIC0xNDIwMSw4ICYjNDM7MTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKICAqKi8KIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIHsKLQlpbnQgcmV0ID0gLUVOT0VOVDsKIAlzdHJ1Y3QgaTQwZV9wZiAqcGYgPSB2c2ktJmd0O2JhY2s7CiYjNDM7CWJvb2wgcmV1c2VfaXJxX2x1bXAgPSBmYWxzZTsKJiM0MzsJaW50IHJldCA9IC1FTk9FTlQ7CiAKIAlpZiAodnNpLSZndDtxX3ZlY3RvcnNbMF0pIHsKIAkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1ZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXG4mIzM0OywKQEAgLTE0MjEwLDcgJiM0MzsxNDIxNSwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJCXJldHVybiAtRUVYSVNUOwogCX0KIAotCWlmICh2c2ktJmd0O2Jhc2VfdmVjdG9yKSB7CiYjNDM7CWlmICh2c2ktJmd0O3R5cGUgPT0gSTQwRV9WU0lfTUFJTiAmYW1wOyZhbXA7IHZzaS0mZ3Q7YmFzZV92ZWN0b3IpCiYjNDM7CQlyZXVzZV9pcnFfbHVtcCA9IHRydWU7CiYjNDM7CiYjNDM7CWlmICh2c2ktJmd0O2Jhc2VfdmVjdG9yICZhbXA7JmFtcDsgIXJldXNlX2lycV9sdW1wKSB7CiAJCWRldl9pbmZvKCZhbXA7cGYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDtWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXG4mIzM0OywKIAkJCSB2c2ktJmd0O3NlaWQsIHZzaS0mZ3Q7YmFzZV92ZWN0b3IpOwogCQlyZXR1cm4gLUVFWElTVDsKQEAgLTE0MjMwLDYgJiM0MzsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpCiAJKi8KIAlpZiAoIXRlc3RfYml0KEk0MEVfRkxBR19NU0lYX0VOQSwgcGYtJmd0O2ZsYWdzKSkKIAkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJaWYgKHJldXNlX2lycV9sdW1wKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlpZiAodnNpLSZndDtudW1fcV92ZWN0b3JzKQogCQl2c2ktJmd0O2Jhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtJmd0O2lycV9waWxlLAogCQkJCQkJIHZzaS0mZ3Q7bnVtX3FfdmVjdG9ycywgdnNpLSZndDtpZHgpOwpAQCAtMTQyNTUsNyAmIzQzOzE0MjY3LDggQEAgc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKQogICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3QKICAqIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIE5VTEwgb24gZmFpbHVyZS4KICAqKi8KLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKJiM0MztzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksCiYjNDM7CQkJCQkgICAgICBib29sIGxvY2tfYWNxdWlyZWQpCiB7CiAJc3RydWN0IGk0MGVfdnNpICptYWluX3ZzaTsKIAl1MTYgYWxsb2NfcXVldWVfcGFpcnM7CkBAIC0xNDI2OCwxMyAmIzQzOzE0MjgxLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAlwZiA9IHZzaS0mZ3Q7YmFjazsKIAogCWk0MGVfcHV0X2x1bXAocGYtJmd0O3FwX3BpbGUsIHZzaS0mZ3Q7YmFzZV9xdWV1ZSwgdnNpLSZndDtpZHgpOwomIzQzOwlpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpOwogCWk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7CiYjNDM7CWk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSk7CiAKLQlpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2ksIGZhbHNlKTsKIAlpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHZzaSk7Ci0JcmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpOwomIzQzOwlyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycl92c2k7CiYjNDM7CQlnb3RvIGVycl9uZXRkZXY7CiYjNDM7CiYjNDM7CS8qIFJlYnVpbGQgcV92ZWN0b3JzIGR1cmluZyBWU0kgcmVpbml0IGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBjaGFubmVsCiYjNDM7CSAqIGNvdW50IG1heSBjaGFuZ2UgbnVtX3FfdmVjdG9ycy4gS2VlcCB2ZWN0b3IgdG9wb2xvZ3kgYWxpZ25lZCB3aXRoIHRoZQomIzQzOwkgKiBxdWV1ZSBjb25maWd1cmF0aW9uIGFmdGVyIGV0aHRvb2wmIzM5O3MgLnNldF9jaGFubmVscygpIGNhbGxiYWNrLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfbmV0ZGV2OwogCiAJYWxsb2NfcXVldWVfcGFpcnMgPSB2c2ktJmd0O2FsbG9jX3F1ZXVlX3BhaXJzICoKIAkJCSAgICAoaTQwZV9lbmFibGVkX3hkcF92c2kodnNpKSA/IDIgOiAxKTsKQEAgLTE0Mjg0LDcgJiM0MzsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAogCQkJICYjMzQ7ZmFpbGVkIHRvIGdldCB0cmFja2luZyBmb3IgJWQgcXVldWVzIGZvciBWU0kgJWQgZXJyICVkXG4mIzM0OywKIAkJCSBhbGxvY19xdWV1ZV9wYWlycywgdnNpLSZndDtzZWlkLCByZXQpOwotCQlnb3RvIGVycl92c2k7CiYjNDM7CQlnb3RvIGVycl9yaW5nczsKIAl9CiAJdnNpLSZndDtiYXNlX3F1ZXVlID0gcmV0OwogCkBAIC0xNDMwOSwxNiAmIzQzOzE0MzMxLDE5IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSkKIAogZXJyX3JpbmdzOgogCWk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7CiYjNDM7ZXJyX25ldGRldjoKIAlpZiAodnNpLSZndDtuZXRkZXZfcmVnaXN0ZXJlZCkgewogCQl2c2ktJmd0O25ldGRldl9yZWdpc3RlcmVkID0gZmFsc2U7Ci0JCXVucmVnaXN0ZXJfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCWlmIChsb2NrX2FjcXVpcmVkKQomIzQzOwkJCXVucmVnaXN0ZXJfbmV0ZGV2aWNlKHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQl1bnJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7CiAJCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKIAkJdnNpLSZndDtuZXRkZXYgPSBOVUxMOwogCX0KIAlpZiAodnNpLSZndDt0eXBlID09IEk0MEVfVlNJX01BSU4pCiAJCWk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpOwogCWk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoJmFtcDtwZi0mZ3Q7aHcsIHZzaS0mZ3Q7c2VpZCwgTlVMTCk7Ci1lcnJfdnNpOgogCWk0MGVfdnNpX2NsZWFyKHZzaSk7CiAJcmV0dXJuIE5VTEw7CiB9CkBAIC0xNDQ0OCwyNiAmIzQzOzE0NDczLDE3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLAogCQkJCWdvdG8gZXJyX25ldGRldjsKIAkJCVNFVF9ORVRERVZfREVWTElOS19QT1JUKHZzaS0mZ3Q7bmV0ZGV2LCAmYW1wO3BmLSZndDtkZXZsaW5rX3BvcnQpOwogCQl9Ci0JCXJldCA9IHJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycl9kbF9wb3J0OwotCQl2c2ktJmd0O25ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTsKLQkJbmV0aWZfY2Fycmllcl9vZmYodnNpLSZndDtuZXRkZXYpOwotI2lmZGVmIENPTkZJR19JNDBFX0RDQgotCQkvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi8KLQkJaTQwZV9kY2JubF9zZXR1cCh2c2kpOwotI2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqLwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEk0MEVfVlNJX0ZESVI6CiAJCS8qIHNldCB1cCB2ZWN0b3JzIGFuZCByaW5ncyBpZiBuZWVkZWQgKi8KLQkJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJfbXNpeDsKLQogCQlyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9yaW5nczsKIAomIzQzOwkJcmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIGVycl9xdmVjOwomIzQzOwogCQkvKiBtYXAgYWxsIG9mIHRoZSByaW5ncyB0byB0aGUgcV92ZWN0b3JzICovCiAJCWk0MGVfdnNpX21hcF9yaW5nc190b192ZWN0b3JzKHZzaSk7CiAKQEAgLTE0NDg0LDIzICYjNDM7MTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsCiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9jb25maWc7CiAJfQomIzQzOwomIzQzOwlpZiAodnNpLSZndDtuZXRkZXYpIHsKJiM0MzsJCXJldCA9IHJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWdvdG8gZXJyX2NvbmZpZzsKJiM0MzsJCXZzaS0mZ3Q7bmV0ZGV2X3JlZ2lzdGVyZWQgPSB0cnVlOwomIzQzOwkJbmV0aWZfY2Fycmllcl9vZmYodnNpLSZndDtuZXRkZXYpOwomIzQzOyNpZmRlZiBDT05GSUdfSTQwRV9EQ0IKJiM0MzsJCS8qIFNldHVwIERDQiBuZXRsaW5rIGludGVyZmFjZSAqLwomIzQzOwkJaTQwZV9kY2JubF9zZXR1cCh2c2kpOwomIzQzOyNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi8KJiM0MzsJfQomIzQzOwogCXJldHVybiB2c2k7CiAKIGVycl9jb25maWc6CiYjNDM7CWk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7CiYjNDM7ZXJyX3F2ZWM6CiAJaTQwZV92c2lfY2xlYXJfcmluZ3ModnNpKTsKIGVycl9yaW5nczoKLQlpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpOwotZXJyX21zaXg6CiAJaWYgKHZzaS0mZ3Q7bmV0ZGV2X3JlZ2lzdGVyZWQpIHsKIAkJdnNpLSZndDtuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCQl1bnJlZ2lzdGVyX25ldGRldih2c2ktJmd0O25ldGRldik7Ci0JCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKLQkJdnNpLSZndDtuZXRkZXYgPSBOVUxMOwogCX0KLWVycl9kbF9wb3J0OgogCWlmICh2c2ktJmd0O3R5cGUgPT0gSTQwRV9WU0lfTUFJTikKIAkJaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChwZik7CiBlcnJfbmV0ZGV2OgomIzQzOwlpZiAodnNpLSZndDtuZXRkZXYpIHsKJiM0MzsJCWZyZWVfbmV0ZGV2KHZzaS0mZ3Q7bmV0ZGV2KTsKJiM0MzsJCXZzaS0mZ3Q7bmV0ZGV2ID0gTlVMTDsKJiM0MzsJfQogCWk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoJmFtcDtwZi0mZ3Q7aHcsIHZzaS0mZ3Q7c2VpZCwgTlVMTCk7CiBlcnJfdnNpOgogCWk0MGVfdnNpX2NsZWFyKHZzaSk7CkBAIC0xNTAzNCw3ICYjNDM7MTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aQogCQkJbWFpbl92c2kgPSBpNDBlX3ZzaV9zZXR1cChwZiwgSTQwRV9WU0lfTUFJTiwKIAkJCQkJCSAgdXBsaW5rX3NlaWQsIDApOwogCQllbHNlIGlmIChyZWluaXQpCi0JCQltYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7CiYjNDM7CQkJbWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpOwogCQlpZiAoIW1haW5fdnNpKSB7CiAJCQlkZXZfaW5mbygmYW1wO3BmLSZndDtwZGV2LSZndDtkZXYsICYjMzQ7c2V0dXAgb2YgTUFJTiBWU0kgZmFpbGVkXG4mIzM0Oyk7CiAJCQlpNDBlX2Nsb3VkX2ZpbHRlcl9leGl0KHBmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYwppbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmMKQEAgLTE1NTYsOCAmIzQzOzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKQogCWlmIChwZi0mZ3Q7cHRwX2Nsb2NrKSB7CiAJCXB0cF9jbG9ja191bnJlZ2lzdGVyKHBmLSZndDtwdHBfY2xvY2spOwogCQlwZi0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKLQkJZGV2X2luZm8oJmFtcDtwZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0OyVzOiByZW1vdmVkIFBIQyBvbiAlc1xuJiMzNDssIF9fZnVuY19fLAotCQkJIG1haW5fdnNpLSZndDtuZXRkZXYtJmd0O25hbWUpOwomIzQzOwkJaWYgKG1haW5fdnNpKQomIzQzOwkJCWRldl9pbmZvKCZhbXA7cGYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDslczogcmVtb3ZlZCBQSEMgb24gJXNcbiYjMzQ7LCBfX2Z1bmNfXywKJiM0MzsJCQkJIG1haW5fdnNpLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCX0KIAogCWlmIChpNDBlX2lzX3B0cF9waW5fZGV2KCZhbXA7cGYtJmd0O2h3KSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGk0MGVfbWFpbi5jYCBhbmQgYGk0MGVfcHRwLmNgIOKAkyBzcGVjaWZpY2FsbHksIGNoYW5nZXMgcmVsYXRlZCB0byBWU0kgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIHRvIGJlIGNsZWFuaW5nIHVwIFZTSSByZWluaXRpYWxpemF0aW9uLCBxdWV1ZSB2ZWN0b3IgYWxsb2NhdGlvbiwgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZy4gSSByZWNvZ25pemUgdGhpcyBhcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IFRoZSBpNDBlIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIFhMNzEwIEZhbWlseS4KCk15IG5leHQgc3RlcCBpcyB0byBldmFsdWF0ZSBmdXp6aW5nIHBvdGVudGlhbC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgd2UgY2FuIGZ1enogdGhpcy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgZ29vZCBzdXBwb3J0IGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzIHZpYSB2aXJ0dWFsIFBDSSBvciBzaW1pbGFyIHRlY2huaXF1ZXM/IEkgcmVjYWxsIGBzeXpfcGNpYCBhbmQgYHN5el91c2JgLCBidXQgUENJIGZ1enppbmcgY2FuIGJlIHRyaWNraWVyLiBJdCBkZXBlbmRzIG9uIHdoZXRoZXIgUUVNVSBwcm9wZXJseSBlbXVsYXRlcyB0aGUgaTQwZSwgb3IgaWYgc3l6a2FsbGVyIGlzIGFibGUgdG8gdXNlIGUxMDAwZS9pNDBlIGVtdWxhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgSSB0aGluayBRRU1VIGRvZXMgZW11bGF0ZSBzb21lIEludGVsIE5JQ3MhIEkmIzM5O2QgYmV0dGVyIGNvbmZpcm0gaXQgaGFzIGk0MGUgZW11bGF0aW9uLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIHNwZWNpZmljIHByb21wdCBpcyB0YWxraW5nIGFib3V0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYnV0IEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIGk0MGUhIE5vdyB0aGF0IEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSBpNDBlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKTXkgdGhvdWdodCBwcm9jZXNzIGlzOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19JNDBFYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgaXQmIzM5O3MgYmFjayB0byBhIHNpbXBsZSBzZWFyY2ggZm9yIGBDT05GSUdfSTQwRWAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSTQwRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjk6Y29uZmlnIEk0MEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBYTDcxMCBGYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNTA6Y29uZmlnIEk0MEVfRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjYyPWNvbmZpZyBJQVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI2ODpjb25maWcgSTQwRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpNDBlIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBgSTQwRWAuIFRoZSBwYXRjaCBhZmZlY3RzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYGk0MGVfdnNpX2FsbG9jX2FycmF5c2AsIGBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzYCwgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAsIGFuZCBgaTQwZV92c2lfc2V0dXBgLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBjaGVja2luZyBRRU1VIHN1cHBvcnQgZm9yIGk0MGUsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB3ZSYjMzk7cmUgbGV2ZXJhZ2luZyBzeXprYWxsZXIgYW5kIGl0cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIHRoYXQmIzM5O3Mgbm90IGRpcmVjdGx5IHJlbGV2YW50IGhlcmUuIEJhY2sgdG8gdGhlIHBhdGNoIGl0c2VsZi4KClJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCBhbmQgYGk0MGVfdnNpX3NldHVwYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZHVyaW5nIGRldmljZSBwcm9iZSBhbmQgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBvciBhcmUgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgb25lcy4KCkxldCYjMzk7cyBzZWU6IGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBgaTQwZV92c2lfc2V0dXBgLCBgaTQwZV9wdHBfc3RvcGAsIGBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpYCwgYW5kIGBpNDBlX3ZzaV9mcmVlX2FycmF5c2AuIFRob3NlIGFyZSB0aGUgcmVsZXZhbnQgc3ltYm9scy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdW5kZXJzdGFuZGluZyBleGFjdGx5IGhvdyB0aGUgY2hhbmdlcyB0byBgaTQwZV92c2lfcmVpbml0X3NldHVwYCBhbmQgYGk0MGVfdnNpX3NldHVwYCBpbXBhY3QgdGhlIG92ZXJhbGwgZmxvdy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aG9zZSB0d28sIGFuZCB0aGVuIHNlZSBob3cgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG1pZ2h0IGJlIGltcGFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k0MGVfdnNpX3JlaW5pdF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTQyMDY9c3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNjEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MjYyOiAqIGk0MGVfdnNpX3JlaW5pdF9zZXR1cCAtIHJldHVybiBhbmQgcmVhbGxvY2F0ZSByZXNvdXJjZXMgZm9yIGEgVlNJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYzLSAqIEB2c2k6IHBvaW50ZXIgdG8gdGhlIHZzaS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjY5LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNzA6c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDI3MS1cdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTUwMDU9c3RhdGljIGludCBpNDBlX3NldHVwX3BmX3N3aXRjaChzdHJ1Y3QgaTQwZV9wZiAqcGYsIGJvb2wgcmVpbml0LCBib29sIGxvY2tfYWNxdWlyZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNTA2Ni1cdFx0ZWxzZSBpZiAocmVpbml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNTA2NzpcdFx0XHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSwgbG9ja19hY3F1aXJlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE1MDY4LVx0XHRpZiAoIW1haW5fdnNpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzMAoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guICBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYCwgYGk0MGVfdnNpX2ZyZWVfYXJyYXlzYCwgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgLCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCwgYGk0MGVfdnNpX3NldHVwYCwgYGk0MGVfcHRwX3N0b3BgLCBhbmQgYGk0MGVfc2V0X251bV9yaW5nc19pbl92c2lgIOKAkyB0aG9zZSBhcmUgYWxsIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIGZvY3VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgc2hvdWxkIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBjb25maWd1cmF0aW9uIHN5bWJvbHMgdGhhdCBpbXBhY3QgdGhlc2UgZnVuY3Rpb25zLgoKQWhhLCBgQ09ORklHX0k0MEVgIGlzIHRoZSBtYWluIG9uZSwgYnV0IHRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgc2VjdGlvbiByZWZlcmVuY2luZyBgQ09ORklHX0k0MEVfRENCYC4gIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uOiBpdCBzZWVtcyBsaWtlIGBpNDBlX2RjYm5sX3NldHVwYCBpcyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0k0MEVfRENCYC4gU28gSSYjMzk7bGwgaW5jbHVkZSBgSTQwRV9EQ0JgIHRvbywganVzdCB0byBiZSBjb21wcmVoZW5zaXZlIGFuZCBjb3ZlciB0aGF0IGNvbmRpdGlvbmFsIHBhdGguIEl0JiMzOTtzIGEgYm9vbGVhbiwgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBzbyBJJiMzOTtsbCBiZSBzdXJlIHRvIGhhbmRsZSB0aGF0LiBJIHdhbnQgdG8gaW5jbHVkZSBhbGwgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlIGluY2x1c2lvbiBvZiBib3RoIGBJNDBFYCBhbmQgYEk0MEVfRENCYCwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJpcGUgZm9yIGZ1enppbmcuIEkmIzM5O20gc2F0aXNmaWVkIHRoYXQgSSYjMzk7dmUgaWRlbnRpZmllZCBhbGwgdGhlIGtleSBhcmVhcy4KClNvLCBsZXQgbWUgc29saWRpZnkgdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczoKCiogICBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYAoqICAgYGk0MGVfdnNpX2ZyZWVfYXJyYXlzYAoqICAgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgCiogICBgaTQwZV92c2lfcmVpbml0X3NldHVwYAoqICAgYGk0MGVfdnNpX3NldHVwYAoqICAgYGk0MGVfcHRwX3N0b3BgCiogICBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAKCkkgY2FuIGNhbGwgc2V0LXJlc3VsdHMgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJNDBFJiMzNDssCiAgICAmIzM0O0k0MEVfRENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aTQwZV92c2lfYWxsb2NfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX2ZyZWVfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwX3ZlY3RvcnMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfcmVpbml0X3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfcHRwX3N0b3AmIzM0OywKICAgICYjMzQ7aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJNDBFJiMzNDssCiAgICAmIzM0O0k0MEVfRENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aTQwZV92c2lfYWxsb2NfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX2ZyZWVfYXJyYXlzJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwX3ZlY3RvcnMmIzM0OywKICAgICYjMzQ7aTQwZV92c2lfcmVpbml0X3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfdnNpX3NldHVwJiMzNDssCiAgICAmIzM0O2k0MGVfcHRwX3N0b3AmIzM0OywKICAgICYjMzQ7aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6NTM6NTIuNTI1NzI1MDI1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwMTg0MzY0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSTQwRVwiLFxuICAgIFwiSTQwRV9EQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpNDBlX3ZzaV9hbGxvY19hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX2ZyZWVfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzXCIsXG4gICAgXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgICBcImk0MGVfdnNpX3NldHVwXCIsXG4gICAgXCJpNDBlX3B0cF9zdG9wXCIsXG4gICAgXCJpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6NTM6NTIuNTI1NzM0MDA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIwMjI3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMjA6NTM6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG5AQCAtMTE0MDYsMTAgKzExNDA2LDE0IEBAIHN0YXRpYyB2b2lkIGk0MGVfc2VydmljZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBpNDBlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0dTE2IHFwcztcXG4gXFxuIFxcdHN3aXRjaCAodnNpLVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgSTQwRV9WU0lfTUFJTjpcXG4gXFx0XFx0dnNpLVxcdTAwM2VhbGxvY19xdWV1ZV9wYWlycyA9IHBmLVxcdTAwM2VudW1fbGFuX3FwcztcXG4rXFx0XFx0cXBzID0gdnNpLVxcdTAwM2VyZXFfcXVldWVfcGFpcnMgP1xcbitcXHRcXHQgICAgICBtaW4odnNpLVxcdTAwM2VyZXFfcXVldWVfcGFpcnMsIHBmLVxcdTAwM2VudW1fbGFuX3FwcykgOlxcbitcXHRcXHQgICAgICBwZi1cXHUwMDNlbnVtX2xhbl9xcHM7XFxuIFxcdFxcdGlmICghdnNpLVxcdTAwM2VudW1fdHhfZGVzYylcXG4gXFx0XFx0XFx0dnNpLVxcdTAwM2VudW1fdHhfZGVzYyA9IEFMSUdOKEk0MEVfREVGQVVMVF9OVU1fREVTQ1JJUFRPUlMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBJNDBFX1JFUV9ERVNDUklQVE9SX01VTFRJUExFKTtcXG5AQCAtMTE0MTcsNyArMTE0MjEsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3J4X2Rlc2MgPSBBTElHTihJNDBFX0RFRkFVTFRfTlVNX0RFU0NSSVBUT1JTLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XFxuIFxcdFxcdGlmICh0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVxcdTAwM2VmbGFncykpXFxuLVxcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycyA9IHBmLVxcdTAwM2VudW1fbGFuX21zaXg7XFxuK1xcdFxcdFxcdHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycyA9IGNsYW1wKHFwcywgMSwgcGYtXFx1MDAzZW51bV9sYW5fbXNpeCk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0dnNpLVxcdTAwM2VudW1fcV92ZWN0b3JzID0gMTtcXG4gXFxuQEAgLTExNDY5LDEyICsxMTQ3MywxMSBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIC8qKlxcbiAgKiBpNDBlX3ZzaV9hbGxvY19hcnJheXMgLSBBbGxvY2F0ZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgdnNpXFxuICAqIEB2c2k6IFZTSSBwb2ludGVyXFxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxcbiAgKlxcbiAgKiBPbiBlcnJvcjogcmV0dXJucyBlcnJvciBjb2RlIChuZWdhdGl2ZSlcXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXFxuICAqKi9cXG4tc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgYWxsb2NfcXZlY3RvcnMpXFxuK3N0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdHN0cnVjdCBpNDBlX3JpbmcgKipuZXh0X3JpbmdzO1xcbiBcXHRpbnQgc2l6ZTtcXG5AQCAtMTE0OTMsMTkgKzExNDk2LDIwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxcbiBcXHR9XFxuIFxcdHZzaS1cXHUwMDNlcnhfcmluZ3MgPSBuZXh0X3JpbmdzO1xcbiBcXG4tXFx0aWYgKGFsbG9jX3F2ZWN0b3JzKSB7XFxuLVxcdFxcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgcV92ZWN0b3IgcG9pbnRlcnMgKi9cXG4tXFx0XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycztcXG4tXFx0XFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbi1cXHRcXHRpZiAoIXZzaS1cXHUwMDNlcV92ZWN0b3JzKSB7XFxuLVxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdFxcdGdvdG8gZXJyX3ZlY3RvcnM7XFxuLVxcdFxcdH1cXG4rXFx0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xcbitcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBpNDBlX3FfdmVjdG9yICopICogdnNpLVxcdTAwM2VudW1fcV92ZWN0b3JzO1xcbitcXHR2c2ktXFx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdnNpLVxcdTAwM2VxX3ZlY3RvcnMpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBlcnJfdmVjdG9ycztcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiBcXG4gZXJyX3ZlY3RvcnM6XFxuIFxcdGtmcmVlKHZzaS1cXHUwMDNldHhfcmluZ3MpO1xcbitcXHR2c2ktXFx1MDAzZXR4X3JpbmdzID0gTlVMTDtcXG4rXFx0dnNpLVxcdTAwM2VyeF9yaW5ncyA9IE5VTEw7XFxuK1xcdHZzaS1cXHUwMDNleGRwX3JpbmdzID0gTlVMTDtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMTE1NzgsNyArMTE1ODIsNyBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGVycl9yaW5ncztcXG4gXFxuLVxcdHJldCA9IGk0MGVfdnNpX2FsbG9jX2FycmF5cyh2c2ksIHRydWUpO1xcbitcXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBlcnJfcmluZ3M7XFxuIFxcbkBAIC0xMTYwMywxOCArMTE2MDcsMTUgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcXG4gLyoqXFxuICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJXFxuICAqIEB2c2k6IFZTSSBwb2ludGVyXFxuLSAqIEBmcmVlX3F2ZWN0b3JzOiBhIGJvb2wgdG8gc3BlY2lmeSBpZiBxX3ZlY3RvcnMgbmVlZCB0byBiZSBmcmVlZC5cXG4gICpcXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXFxuICAqIE9uIHN1Y2Nlc3M6IHJldHVybnMgMFxcbiAgKiovXFxuLXN0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGZyZWVfcXZlY3RvcnMpXFxuK3N0YXRpYyB2b2lkIGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiB7XFxuIFxcdC8qIGZyZWUgdGhlIHJpbmcgYW5kIHZlY3RvciBjb250YWluZXJzICovXFxuLVxcdGlmIChmcmVlX3F2ZWN0b3JzKSB7XFxuLVxcdFxcdGtmcmVlKHZzaS1cXHUwMDNlcV92ZWN0b3JzKTtcXG4tXFx0XFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xcbi1cXHR9XFxuK1xcdGtmcmVlKHZzaS1cXHUwMDNlcV92ZWN0b3JzKTtcXG4rXFx0dnNpLVxcdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xcbiBcXHRrZnJlZSh2c2ktXFx1MDAzZXR4X3JpbmdzKTtcXG4gXFx0dnNpLVxcdTAwM2V0eF9yaW5ncyA9IE5VTEw7XFxuIFxcdHZzaS1cXHUwMDNlcnhfcmluZ3MgPSBOVUxMO1xcbkBAIC0xMTY3NCw3ICsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdGk0MGVfcHV0X2x1bXAocGYtXFx1MDAzZWlycV9waWxlLCB2c2ktXFx1MDAzZWJhc2VfdmVjdG9yLCB2c2ktXFx1MDAzZWlkeCk7XFxuIFxcbiBcXHRiaXRtYXBfZnJlZSh2c2ktXFx1MDAzZWFmX3hkcF96Y19xcHMpO1xcbi1cXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2ksIHRydWUpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xcbiBcXHRpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpO1xcbiBcXG4gXFx0cGYtXFx1MDAzZXZzaVt2c2ktXFx1MDAzZWlkeF0gPSBOVUxMO1xcbkBAIC0xMTY5OSwxMSArMTE3MDAsMTMgQEAgc3RhdGljIHZvaWQgaTQwZV92c2lfY2xlYXJfcmluZ3Moc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcbiBcXHRpZiAodnNpLVxcdTAwM2V0eF9yaW5ncyBcXHUwMDI2XFx1MDAyNiB2c2ktXFx1MDAzZXR4X3JpbmdzWzBdKSB7XFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB2c2ktXFx1MDAzZWFsbG9jX3F1ZXVlX3BhaXJzOyBpKyspIHtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KHZzaS1cXHUwMDNldHhfcmluZ3NbaV0sIHJjdSk7XFxuK1xcdFxcdFxcdHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktXFx1MDAzZXR4X3JpbmdzW2ldO1xcbitcXG4gXFx0XFx0XFx0V1JJVEVfT05DRSh2c2ktXFx1MDAzZXR4X3JpbmdzW2ldLCBOVUxMKTtcXG4gXFx0XFx0XFx0V1JJVEVfT05DRSh2c2ktXFx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcXG4gXFx0XFx0XFx0aWYgKHZzaS1cXHUwMDNleGRwX3JpbmdzKVxcbiBcXHRcXHRcXHRcXHRXUklURV9PTkNFKHZzaS1cXHUwMDNleGRwX3JpbmdzW2ldLCBOVUxMKTtcXG4rXFx0XFx0XFx0a2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiB9XFxuQEAgLTEyMDQ2LDcgKzEyMDQ5LDggQEAgc3RhdGljIGludCBpNDBlX3ZzaV9hbGxvY19xX3ZlY3RvcihzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHZfaWR4KVxcbiBcXHRjcHVtYXNrX2NvcHkoXFx1MDAyNnFfdmVjdG9yLVxcdTAwM2VhZmZpbml0eV9tYXNrLCBjcHVfcG9zc2libGVfbWFzayk7XFxuIFxcbiBcXHRpZiAodnNpLVxcdTAwM2VuZXRkZXYpXFxuLVxcdFxcdG5ldGlmX25hcGlfYWRkKHZzaS1cXHUwMDNlbmV0ZGV2LCBcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGksIGk0MGVfbmFwaV9wb2xsKTtcXG4rXFx0XFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cXHUwMDNlbmV0ZGV2LCBcXHUwMDI2cV92ZWN0b3ItXFx1MDAzZW5hcGksXFxuK1xcdFxcdFxcdFxcdCAgICAgIGk0MGVfbmFwaV9wb2xsLCB2X2lkeCk7XFxuIFxcbiBcXHQvKiB0aWUgcV92ZWN0b3IgYW5kIHZzaSB0b2dldGhlciAqL1xcbiBcXHR2c2ktXFx1MDAzZXFfdmVjdG9yc1t2X2lkeF0gPSBxX3ZlY3RvcjtcXG5AQCAtMTQyMDEsOCArMTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4gICoqL1xcbiBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIHtcXG4tXFx0aW50IHJldCA9IC1FTk9FTlQ7XFxuIFxcdHN0cnVjdCBpNDBlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0Ym9vbCByZXVzZV9pcnFfbHVtcCA9IGZhbHNlO1xcbitcXHRpbnQgcmV0ID0gLUVOT0VOVDtcXG4gXFxuIFxcdGlmICh2c2ktXFx1MDAzZXFfdmVjdG9yc1swXSkge1xcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIlZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXFxcXG5cXFwiLFxcbkBAIC0xNDIxMCw3ICsxNDIxNSwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodnNpLVxcdTAwM2ViYXNlX3ZlY3Rvcikge1xcbitcXHRpZiAodnNpLVxcdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2ViYXNlX3ZlY3RvcilcXG4rXFx0XFx0cmV1c2VfaXJxX2x1bXAgPSB0cnVlO1xcbitcXG4rXFx0aWYgKHZzaS1cXHUwMDNlYmFzZV92ZWN0b3IgXFx1MDAyNlxcdTAwMjYgIXJldXNlX2lycV9sdW1wKSB7XFxuIFxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiVlNJICVkIGhhcyBub24temVybyBiYXNlIHZlY3RvciAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0IHZzaS1cXHUwMDNlc2VpZCwgdnNpLVxcdTAwM2ViYXNlX3ZlY3Rvcik7XFxuIFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbkBAIC0xNDIzMCw2ICsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcdCovXFxuIFxcdGlmICghdGVzdF9iaXQoSTQwRV9GTEFHX01TSVhfRU5BLCBwZi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKHJldXNlX2lycV9sdW1wKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0aWYgKHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycylcXG4gXFx0XFx0dnNpLVxcdTAwM2ViYXNlX3ZlY3RvciA9IGk0MGVfZ2V0X2x1bXAocGYsIHBmLVxcdTAwM2VpcnFfcGlsZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHZzaS1cXHUwMDNlbnVtX3FfdmVjdG9ycywgdnNpLVxcdTAwM2VpZHgpO1xcbkBAIC0xNDI1NSw3ICsxNDI2Nyw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4gICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGFuZCBjb25maWd1cmVkIFZTSSBzdyBzdHJ1Y3RcXG4gICogb24gc3VjY2Vzcywgb3RoZXJ3aXNlIHJldHVybnMgTlVMTCBvbiBmYWlsdXJlLlxcbiAgKiovXFxuLXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4rc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBib29sIGxvY2tfYWNxdWlyZWQpXFxuIHtcXG4gXFx0c3RydWN0IGk0MGVfdnNpICptYWluX3ZzaTtcXG4gXFx0dTE2IGFsbG9jX3F1ZXVlX3BhaXJzO1xcbkBAIC0xNDI2OCwxMyArMTQyODEsMjIgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiBcXHRwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4gXFxuIFxcdGk0MGVfcHV0X2x1bXAocGYtXFx1MDAzZXFwX3BpbGUsIHZzaS1cXHUwMDNlYmFzZV9xdWV1ZSwgdnNpLVxcdTAwM2VpZHgpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX3FfdmVjdG9ycyh2c2kpO1xcbiBcXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xcbitcXHRpNDBlX3ZzaV9mcmVlX2FycmF5cyh2c2kpO1xcbiBcXG4tXFx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCBmYWxzZSk7XFxuIFxcdGk0MGVfc2V0X251bV9yaW5nc19pbl92c2kodnNpKTtcXG4tXFx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xcbitcXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBlcnJfdnNpO1xcbitcXHRcXHRnb3RvIGVycl9uZXRkZXY7XFxuK1xcbitcXHQvKiBSZWJ1aWxkIHFfdmVjdG9ycyBkdXJpbmcgVlNJIHJlaW5pdCBiZWNhdXNlIHRoZSBlZmZlY3RpdmUgY2hhbm5lbFxcbitcXHQgKiBjb3VudCBtYXkgY2hhbmdlIG51bV9xX3ZlY3RvcnMuIEtlZXAgdmVjdG9yIHRvcG9sb2d5IGFsaWduZWQgd2l0aCB0aGVcXG4rXFx0ICogcXVldWUgY29uZmlndXJhdGlvbiBhZnRlciBldGh0b29sJ3MgLnNldF9jaGFubmVscygpIGNhbGxiYWNrLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9uZXRkZXY7XFxuIFxcbiBcXHRhbGxvY19xdWV1ZV9wYWlycyA9IHZzaS1cXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgKlxcbiBcXHRcXHRcXHQgICAgKGk0MGVfZW5hYmxlZF94ZHBfdnNpKHZzaSkgPyAyIDogMSk7XFxuQEAgLTE0Mjg0LDcgKzE0MzA2LDcgQEAgc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0IFxcXCJmYWlsZWQgdG8gZ2V0IHRyYWNraW5nIGZvciAlZCBxdWV1ZXMgZm9yIFZTSSAlZCBlcnIgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhbGxvY19xdWV1ZV9wYWlycywgdnNpLVxcdTAwM2VzZWlkLCByZXQpO1xcbi1cXHRcXHRnb3RvIGVycl92c2k7XFxuK1xcdFxcdGdvdG8gZXJyX3JpbmdzO1xcbiBcXHR9XFxuIFxcdHZzaS1cXHUwMDNlYmFzZV9xdWV1ZSA9IHJldDtcXG4gXFxuQEAgLTE0MzA5LDE2ICsxNDMzMSwxOSBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuIFxcbiBlcnJfcmluZ3M6XFxuIFxcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XFxuK2Vycl9uZXRkZXY6XFxuIFxcdGlmICh2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XFxuIFxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcXG4tXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRpZiAobG9ja19hY3F1aXJlZClcXG4rXFx0XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2UodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2KHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0ZnJlZV9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRcXHR2c2ktXFx1MDAzZW5ldGRldiA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbiBcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG4gXFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcXHUwMDI2cGYtXFx1MDAzZWh3LCB2c2ktXFx1MDAzZXNlaWQsIE5VTEwpO1xcbi1lcnJfdnNpOlxcbiBcXHRpNDBlX3ZzaV9jbGVhcih2c2kpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbkBAIC0xNDQ0OCwyNiArMTQ0NzMsMTcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyX25ldGRldjtcXG4gXFx0XFx0XFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQodnNpLVxcdTAwM2VuZXRkZXYsIFxcdTAwMjZwZi1cXHUwMDNlZGV2bGlua19wb3J0KTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIGVycl9kbF9wb3J0O1xcbi1cXHRcXHR2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcXG4tXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi0jaWZkZWYgQ09ORklHX0k0MEVfRENCXFxuLVxcdFxcdC8qIFNldHVwIERDQiBuZXRsaW5rIGludGVyZmFjZSAqL1xcbi1cXHRcXHRpNDBlX2RjYm5sX3NldHVwKHZzaSk7XFxuLSNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgSTQwRV9WU0lfRkRJUjpcXG4gXFx0XFx0Lyogc2V0IHVwIHZlY3RvcnMgYW5kIHJpbmdzIGlmIG5lZWRlZCAqL1xcbi1cXHRcXHRyZXQgPSBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHZzaSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gZXJyX21zaXg7XFxuLVxcbiBcXHRcXHRyZXQgPSBpNDBlX2FsbG9jX3JpbmdzKHZzaSk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX3JpbmdzO1xcbiBcXG4rXFx0XFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRnb3RvIGVycl9xdmVjO1xcbitcXG4gXFx0XFx0LyogbWFwIGFsbCBvZiB0aGUgcmluZ3MgdG8gdGhlIHFfdmVjdG9ycyAqL1xcbiBcXHRcXHRpNDBlX3ZzaV9tYXBfcmluZ3NfdG9fdmVjdG9ycyh2c2kpO1xcbiBcXG5AQCAtMTQ0ODQsMjMgKzE0NTAwLDM3IEBAIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfc2V0dXAoc3RydWN0IGk0MGVfcGYgKnBmLCB1OCB0eXBlLFxcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIGVycl9jb25maWc7XFxuIFxcdH1cXG4rXFxuK1xcdGlmICh2c2ktXFx1MDAzZW5ldGRldikge1xcbitcXHRcXHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRnb3RvIGVycl9jb25maWc7XFxuK1xcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSB0cnVlO1xcbitcXHRcXHRuZXRpZl9jYXJyaWVyX29mZih2c2ktXFx1MDAzZW5ldGRldik7XFxuKyNpZmRlZiBDT05GSUdfSTQwRV9EQ0JcXG4rXFx0XFx0LyogU2V0dXAgRENCIG5ldGxpbmsgaW50ZXJmYWNlICovXFxuK1xcdFxcdGk0MGVfZGNibmxfc2V0dXAodnNpKTtcXG4rI2VuZGlmIC8qIENPTkZJR19JNDBFX0RDQiAqL1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gdnNpO1xcbiBcXG4gZXJyX2NvbmZpZzpcXG4rXFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcXG4rZXJyX3F2ZWM6XFxuIFxcdGk0MGVfdnNpX2NsZWFyX3JpbmdzKHZzaSk7XFxuIGVycl9yaW5nczpcXG4tXFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcXG4tZXJyX21zaXg6XFxuIFxcdGlmICh2c2ktXFx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XFxuIFxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcXG4gXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXHRcXHRmcmVlX25ldGRldih2c2ktXFx1MDAzZW5ldGRldik7XFxuLVxcdFxcdHZzaS1cXHUwMDNlbmV0ZGV2ID0gTlVMTDtcXG4gXFx0fVxcbi1lcnJfZGxfcG9ydDpcXG4gXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbiBcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG4gZXJyX25ldGRldjpcXG4rXFx0aWYgKHZzaS1cXHUwMDNlbmV0ZGV2KSB7XFxuK1xcdFxcdGZyZWVfbmV0ZGV2KHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4rXFx0XFx0dnNpLVxcdTAwM2VuZXRkZXYgPSBOVUxMO1xcbitcXHR9XFxuIFxcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXFx1MDAyNnBmLVxcdTAwM2VodywgdnNpLVxcdTAwM2VzZWlkLCBOVUxMKTtcXG4gZXJyX3ZzaTpcXG4gXFx0aTQwZV92c2lfY2xlYXIodnNpKTtcXG5AQCAtMTUwMzQsNyArMTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aVxcbiBcXHRcXHRcXHRtYWluX3ZzaSA9IGk0MGVfdnNpX3NldHVwKHBmLCBJNDBFX1ZTSV9NQUlOLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHVwbGlua19zZWlkLCAwKTtcXG4gXFx0XFx0ZWxzZSBpZiAocmVpbml0KVxcbi1cXHRcXHRcXHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7XFxuK1xcdFxcdFxcdG1haW5fdnNpID0gaTQwZV92c2lfcmVpbml0X3NldHVwKG1haW5fdnNpLCBsb2NrX2FjcXVpcmVkKTtcXG4gXFx0XFx0aWYgKCFtYWluX3ZzaSkge1xcbiBcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcInNldHVwIG9mIE1BSU4gVlNJIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdGk0MGVfY2xvdWRfZmlsdGVyX2V4aXQocGYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcXG5pbmRleCBmZjYyYjVmMmM4MTUwNC4uY2E5M2RmNGQ2Nzg1OWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXFxuQEAgLTE1NTYsOCArMTU1Niw5IEBAIHZvaWQgaTQwZV9wdHBfc3RvcChzdHJ1Y3QgaTQwZV9wZiAqcGYpXFxuIFxcdGlmIChwZi1cXHUwMDNlcHRwX2Nsb2NrKSB7XFxuIFxcdFxcdHB0cF9jbG9ja191bnJlZ2lzdGVyKHBmLVxcdTAwM2VwdHBfY2xvY2spO1xcbiBcXHRcXHRwZi1cXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcXG4tXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXFxcblxcXCIsIF9fZnVuY19fLFxcbi1cXHRcXHRcXHQgbWFpbl92c2ktXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuK1xcdFxcdGlmIChtYWluX3ZzaSlcXG4rXFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXFxcblxcXCIsIF9fZnVuY19fLFxcbitcXHRcXHRcXHRcXHQgbWFpbl92c2ktXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChpNDBlX2lzX3B0cF9waW5fZGV2KFxcdTAwMjZwZi1cXHUwMDNlaHcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjUzOjUzLjA4ODY3ODgzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0NTU0NzI4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSTQwRVwiLFxuICAgIFwiSTQwRV9EQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpNDBlX3ZzaV9hbGxvY19hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX2ZyZWVfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzXCIsXG4gICAgXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgICBcImk0MGVfdnNpX3NldHVwXCIsXG4gICAgXCJpNDBlX3B0cF9zdG9wXCIsXG4gICAgXCJpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZTSSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gbG9naWMgaW4gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBpbmNsdWRpbmcgYXJyYXkgYWxsb2NhdGlvbiwgdmVjdG9yIHNldHVwLCBhbmQgZXJyb3IgaGFuZGxpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGRyaXZlciBjb2RlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdmlydHVhbCBQQ0kgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NmM2NmIxMzU5ZDA1ODQyOGJiZGQwMTU2ZjNjNDg1Nzc3N2ExZWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDo1Mzo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uOGEyM2JkOTliZDEyMmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMTE0MDYsMTAgKzExNDA2LDE0IEBAIHN0YXRpYyB2b2lkIGk0MGVfc2VydmljZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXG4ge1xuIFx0c3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHR1MTYgcXBzO1xuIFxuIFx0c3dpdGNoICh2c2ktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBJNDBFX1ZTSV9NQUlOOlxuIFx0XHR2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgPSBwZi1cdTAwM2VudW1fbGFuX3FwcztcbitcdFx0cXBzID0gdnNpLVx1MDAzZXJlcV9xdWV1ZV9wYWlycyA/XG4rXHRcdCAgICAgIG1pbih2c2ktXHUwMDNlcmVxX3F1ZXVlX3BhaXJzLCBwZi1cdTAwM2VudW1fbGFuX3FwcykgOlxuK1x0XHQgICAgICBwZi1cdTAwM2VudW1fbGFuX3FwcztcbiBcdFx0aWYgKCF2c2ktXHUwMDNlbnVtX3R4X2Rlc2MpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV90eF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG5AQCAtMTE0MTcsNyArMTE0MjEsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0X251bV9yaW5nc19pbl92c2koc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRcdFx0dnNpLVx1MDAzZW51bV9yeF9kZXNjID0gQUxJR04oSTQwRV9ERUZBVUxUX05VTV9ERVNDUklQVE9SUyxcbiBcdFx0XHRcdFx0XHQgSTQwRV9SRVFfREVTQ1JJUFRPUl9NVUxUSVBMRSk7XG4gXHRcdGlmICh0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVx1MDAzZWZsYWdzKSlcbi1cdFx0XHR2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycyA9IHBmLVx1MDAzZW51bV9sYW5fbXNpeDtcbitcdFx0XHR2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycyA9IGNsYW1wKHFwcywgMSwgcGYtXHUwMDNlbnVtX2xhbl9tc2l4KTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzID0gMTtcbiBcbkBAIC0xMTQ2OSwxMiArMTE0NzMsMTEgQEAgc3RhdGljIGludCBpNDBlX3NldF9udW1fcmluZ3NfaW5fdnNpKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIC8qKlxuICAqIGk0MGVfdnNpX2FsbG9jX2FycmF5cyAtIEFsbG9jYXRlIHF1ZXVlIGFuZCB2ZWN0b3IgcG9pbnRlciBhcnJheXMgZm9yIHRoZSB2c2lcbiAgKiBAdnNpOiBWU0kgcG9pbnRlclxuLSAqIEBhbGxvY19xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgYWxsb2NhdGVkLlxuICAqXG4gICogT24gZXJyb3I6IHJldHVybnMgZXJyb3IgY29kZSAobmVnYXRpdmUpXG4gICogT24gc3VjY2VzczogcmV0dXJucyAwXG4gICoqL1xuLXN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuK3N0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3JpbmcgKipuZXh0X3JpbmdzO1xuIFx0aW50IHNpemU7XG5AQCAtMTE0OTMsMTkgKzExNDk2LDIwIEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfYWxsb2NfYXJyYXlzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBib29sIGFsbG9jX3F2ZWN0b3JzKVxuIFx0fVxuIFx0dnNpLVx1MDAzZXJ4X3JpbmdzID0gbmV4dF9yaW5ncztcbiBcbi1cdGlmIChhbGxvY19xdmVjdG9ycykge1xuLVx0XHQvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHFfdmVjdG9yIHBvaW50ZXJzICovXG4tXHRcdHNpemUgPSBzaXplb2Yoc3RydWN0IGk0MGVfcV92ZWN0b3IgKikgKiB2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycztcbi1cdFx0dnNpLVx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRcdGlmICghdnNpLVx1MDAzZXFfdmVjdG9ycykge1xuLVx0XHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdFx0Z290byBlcnJfdmVjdG9ycztcbi1cdFx0fVxuK1x0LyogYWxsb2NhdGUgbWVtb3J5IGZvciBxX3ZlY3RvciBwb2ludGVycyAqL1xuK1x0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgaTQwZV9xX3ZlY3RvciAqKSAqIHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzO1xuK1x0dnNpLVx1MDAzZXFfdmVjdG9ycyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXZzaS1cdTAwM2VxX3ZlY3RvcnMpIHtcbitcdFx0cmV0ID0gLUVOT01FTTtcbitcdFx0Z290byBlcnJfdmVjdG9ycztcbiBcdH1cbiBcdHJldHVybiByZXQ7XG4gXG4gZXJyX3ZlY3RvcnM6XG4gXHRrZnJlZSh2c2ktXHUwMDNldHhfcmluZ3MpO1xuK1x0dnNpLVx1MDAzZXR4X3JpbmdzID0gTlVMTDtcbitcdHZzaS1cdTAwM2VyeF9yaW5ncyA9IE5VTEw7XG4rXHR2c2ktXHUwMDNleGRwX3JpbmdzID0gTlVMTDtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTExNTc4LDcgKzExNTgyLDcgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9tZW1fYWxsb2Moc3RydWN0IGk0MGVfcGYgKnBmLCBlbnVtIGk0MGVfdnNpX3R5cGUgdHlwZSlcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgdHJ1ZSk7XG4rXHRyZXQgPSBpNDBlX3ZzaV9hbGxvY19hcnJheXModnNpKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXJyX3JpbmdzO1xuIFxuQEAgLTExNjAzLDE4ICsxMTYwNywxNSBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX21lbV9hbGxvYyhzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0gaTQwZV92c2lfdHlwZSB0eXBlKVxuIC8qKlxuICAqIGk0MGVfdnNpX2ZyZWVfYXJyYXlzIC0gRnJlZSBxdWV1ZSBhbmQgdmVjdG9yIHBvaW50ZXIgYXJyYXlzIGZvciB0aGUgVlNJXG4gICogQHZzaTogVlNJIHBvaW50ZXJcbi0gKiBAZnJlZV9xdmVjdG9yczogYSBib29sIHRvIHNwZWNpZnkgaWYgcV92ZWN0b3JzIG5lZWQgdG8gYmUgZnJlZWQuXG4gICpcbiAgKiBPbiBlcnJvcjogcmV0dXJucyBlcnJvciBjb2RlIChuZWdhdGl2ZSlcbiAgKiBPbiBzdWNjZXNzOiByZXR1cm5zIDBcbiAgKiovXG4tc3RhdGljIHZvaWQgaTQwZV92c2lfZnJlZV9hcnJheXMoc3RydWN0IGk0MGVfdnNpICp2c2ksIGJvb2wgZnJlZV9xdmVjdG9ycylcbitzdGF0aWMgdm9pZCBpNDBlX3ZzaV9mcmVlX2FycmF5cyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiB7XG4gXHQvKiBmcmVlIHRoZSByaW5nIGFuZCB2ZWN0b3IgY29udGFpbmVycyAqL1xuLVx0aWYgKGZyZWVfcXZlY3RvcnMpIHtcbi1cdFx0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4tXHRcdHZzaS1cdTAwM2VxX3ZlY3RvcnMgPSBOVUxMO1xuLVx0fVxuK1x0a2ZyZWUodnNpLVx1MDAzZXFfdmVjdG9ycyk7XG4rXHR2c2ktXHUwMDNlcV92ZWN0b3JzID0gTlVMTDtcbiBcdGtmcmVlKHZzaS1cdTAwM2V0eF9yaW5ncyk7XG4gXHR2c2ktXHUwMDNldHhfcmluZ3MgPSBOVUxMO1xuIFx0dnNpLVx1MDAzZXJ4X3JpbmdzID0gTlVMTDtcbkBAIC0xMTY3NCw3ICsxMTY3NSw3IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfY2xlYXIoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZWlycV9waWxlLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IsIHZzaS1cdTAwM2VpZHgpO1xuIFxuIFx0Yml0bWFwX2ZyZWUodnNpLVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuLVx0aTQwZV92c2lfZnJlZV9hcnJheXModnNpLCB0cnVlKTtcbitcdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSk7XG4gXHRpNDBlX2NsZWFyX3Jzc19jb25maWdfdXNlcih2c2kpO1xuIFxuIFx0cGYtXHUwMDNldnNpW3ZzaS1cdTAwM2VpZHhdID0gTlVMTDtcbkBAIC0xMTY5OSwxMSArMTE3MDAsMTMgQEAgc3RhdGljIHZvaWQgaTQwZV92c2lfY2xlYXJfcmluZ3Moc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXG4gXHRpZiAodnNpLVx1MDAzZXR4X3JpbmdzIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNldHhfcmluZ3NbMF0pIHtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdnNpLVx1MDAzZWFsbG9jX3F1ZXVlX3BhaXJzOyBpKyspIHtcbi1cdFx0XHRrZnJlZV9yY3UodnNpLVx1MDAzZXR4X3JpbmdzW2ldLCByY3UpO1xuK1x0XHRcdHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcgPSB2c2ktXHUwMDNldHhfcmluZ3NbaV07XG4rXG4gXHRcdFx0V1JJVEVfT05DRSh2c2ktXHUwMDNldHhfcmluZ3NbaV0sIE5VTEwpO1xuIFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXJ4X3JpbmdzW2ldLCBOVUxMKTtcbiBcdFx0XHRpZiAodnNpLVx1MDAzZXhkcF9yaW5ncylcbiBcdFx0XHRcdFdSSVRFX09OQ0UodnNpLVx1MDAzZXhkcF9yaW5nc1tpXSwgTlVMTCk7XG4rXHRcdFx0a2ZyZWVfcmN1KHR4X3JpbmcsIHJjdSk7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtMTIwNDYsNyArMTIwNDksOCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX2FsbG9jX3FfdmVjdG9yKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgdl9pZHgpXG4gXHRjcHVtYXNrX2NvcHkoXHUwMDI2cV92ZWN0b3ItXHUwMDNlYWZmaW5pdHlfbWFzaywgY3B1X3Bvc3NpYmxlX21hc2spO1xuIFxuIFx0aWYgKHZzaS1cdTAwM2VuZXRkZXYpXG4tXHRcdG5ldGlmX25hcGlfYWRkKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksIGk0MGVfbmFwaV9wb2xsKTtcbitcdFx0bmV0aWZfbmFwaV9hZGRfY29uZmlnKHZzaS1cdTAwM2VuZXRkZXYsIFx1MDAyNnFfdmVjdG9yLVx1MDAzZW5hcGksXG4rXHRcdFx0XHQgICAgICBpNDBlX25hcGlfcG9sbCwgdl9pZHgpO1xuIFxuIFx0LyogdGllIHFfdmVjdG9yIGFuZCB2c2kgdG9nZXRoZXIgKi9cbiBcdHZzaS1cdTAwM2VxX3ZlY3RvcnNbdl9pZHhdID0gcV92ZWN0b3I7XG5AQCAtMTQyMDEsOCArMTQyMDUsOSBAQCBpbnQgaTQwZV92c2lfcmVsZWFzZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiAgKiovXG4gc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIHtcbi1cdGludCByZXQgPSAtRU5PRU5UO1xuIFx0c3RydWN0IGk0MGVfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHRib29sIHJldXNlX2lycV9sdW1wID0gZmFsc2U7XG4rXHRpbnQgcmV0ID0gLUVOT0VOVDtcbiBcbiBcdGlmICh2c2ktXHUwMDNlcV92ZWN0b3JzWzBdKSB7XG4gXHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIlZTSSAlZCBoYXMgZXhpc3RpbmcgcV92ZWN0b3JzXFxuXCIsXG5AQCAtMTQyMTAsNyArMTQyMTUsMTAgQEAgc3RhdGljIGludCBpNDBlX3ZzaV9zZXR1cF92ZWN0b3JzKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuIFx0XHRyZXR1cm4gLUVFWElTVDtcbiBcdH1cbiBcbi1cdGlmICh2c2ktXHUwMDNlYmFzZV92ZWN0b3IpIHtcbitcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNlYmFzZV92ZWN0b3IpXG4rXHRcdHJldXNlX2lycV9sdW1wID0gdHJ1ZTtcbitcbitcdGlmICh2c2ktXHUwMDNlYmFzZV92ZWN0b3IgXHUwMDI2XHUwMDI2ICFyZXVzZV9pcnFfbHVtcCkge1xuIFx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJWU0kgJWQgaGFzIG5vbi16ZXJvIGJhc2UgdmVjdG9yICVkXFxuXCIsXG4gXHRcdFx0IHZzaS1cdTAwM2VzZWlkLCB2c2ktXHUwMDNlYmFzZV92ZWN0b3IpO1xuIFx0XHRyZXR1cm4gLUVFWElTVDtcbkBAIC0xNDIzMCw2ICsxNDIzOCwxMCBAQCBzdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXHQqL1xuIFx0aWYgKCF0ZXN0X2JpdChJNDBFX0ZMQUdfTVNJWF9FTkEsIHBmLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChyZXVzZV9pcnFfbHVtcClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdGlmICh2c2ktXHUwMDNlbnVtX3FfdmVjdG9ycylcbiBcdFx0dnNpLVx1MDAzZWJhc2VfdmVjdG9yID0gaTQwZV9nZXRfbHVtcChwZiwgcGYtXHUwMDNlaXJxX3BpbGUsXG4gXHRcdFx0XHRcdFx0IHZzaS1cdTAwM2VudW1fcV92ZWN0b3JzLCB2c2ktXHUwMDNlaWR4KTtcbkBAIC0xNDI1NSw3ICsxNDI2Nyw4IEBAIHN0YXRpYyBpbnQgaTQwZV92c2lfc2V0dXBfdmVjdG9ycyhzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gdGhlIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYW5kIGNvbmZpZ3VyZWQgVlNJIHN3IHN0cnVjdFxuICAqIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIE5VTEwgb24gZmFpbHVyZS5cbiAgKiovXG4tc3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuK3N0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbitcdFx0XHRcdFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxuIHtcbiBcdHN0cnVjdCBpNDBlX3ZzaSAqbWFpbl92c2k7XG4gXHR1MTYgYWxsb2NfcXVldWVfcGFpcnM7XG5AQCAtMTQyNjgsMTMgKzE0MjgxLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdHBmID0gdnNpLVx1MDAzZWJhY2s7XG4gXG4gXHRpNDBlX3B1dF9sdW1wKHBmLVx1MDAzZXFwX3BpbGUsIHZzaS1cdTAwM2ViYXNlX3F1ZXVlLCB2c2ktXHUwMDNlaWR4KTtcbitcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuK1x0aTQwZV92c2lfZnJlZV9hcnJheXModnNpKTtcbiBcbi1cdGk0MGVfdnNpX2ZyZWVfYXJyYXlzKHZzaSwgZmFsc2UpO1xuIFx0aTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaSh2c2kpO1xuLVx0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSwgZmFsc2UpO1xuK1x0cmV0ID0gaTQwZV92c2lfYWxsb2NfYXJyYXlzKHZzaSk7XG4gXHRpZiAocmV0KVxuLVx0XHRnb3RvIGVycl92c2k7XG4rXHRcdGdvdG8gZXJyX25ldGRldjtcbitcbitcdC8qIFJlYnVpbGQgcV92ZWN0b3JzIGR1cmluZyBWU0kgcmVpbml0IGJlY2F1c2UgdGhlIGVmZmVjdGl2ZSBjaGFubmVsXG4rXHQgKiBjb3VudCBtYXkgY2hhbmdlIG51bV9xX3ZlY3RvcnMuIEtlZXAgdmVjdG9yIHRvcG9sb2d5IGFsaWduZWQgd2l0aCB0aGVcbitcdCAqIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgZXRodG9vbCdzIC5zZXRfY2hhbm5lbHMoKSBjYWxsYmFjay5cbitcdCAqL1xuK1x0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfbmV0ZGV2O1xuIFxuIFx0YWxsb2NfcXVldWVfcGFpcnMgPSB2c2ktXHUwMDNlYWxsb2NfcXVldWVfcGFpcnMgKlxuIFx0XHRcdCAgICAoaTQwZV9lbmFibGVkX3hkcF92c2kodnNpKSA/IDIgOiAxKTtcbkBAIC0xNDI4NCw3ICsxNDMwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbiBcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwiZmFpbGVkIHRvIGdldCB0cmFja2luZyBmb3IgJWQgcXVldWVzIGZvciBWU0kgJWQgZXJyICVkXFxuXCIsXG4gXHRcdFx0IGFsbG9jX3F1ZXVlX3BhaXJzLCB2c2ktXHUwMDNlc2VpZCwgcmV0KTtcbi1cdFx0Z290byBlcnJfdnNpO1xuK1x0XHRnb3RvIGVycl9yaW5ncztcbiBcdH1cbiBcdHZzaS1cdTAwM2ViYXNlX3F1ZXVlID0gcmV0O1xuIFxuQEAgLTE0MzA5LDE2ICsxNDMzMSwxOSBAQCBzdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXG4gXG4gZXJyX3JpbmdzOlxuIFx0aTQwZV92c2lfZnJlZV9xX3ZlY3RvcnModnNpKTtcbitlcnJfbmV0ZGV2OlxuIFx0aWYgKHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCkge1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2X3JlZ2lzdGVyZWQgPSBmYWxzZTtcbi1cdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4rXHRcdGlmIChsb2NrX2FjcXVpcmVkKVxuK1x0XHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKHZzaS1cdTAwM2VuZXRkZXYpO1xuK1x0XHRlbHNlXG4rXHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGZyZWVfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHR2c2ktXHUwMDNlbmV0ZGV2ID0gTlVMTDtcbiBcdH1cbiBcdGlmICh2c2ktXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxuIFx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbiBcdGk0MGVfYXFfZGVsZXRlX2VsZW1lbnQoXHUwMDI2cGYtXHUwMDNlaHcsIHZzaS1cdTAwM2VzZWlkLCBOVUxMKTtcbi1lcnJfdnNpOlxuIFx0aTQwZV92c2lfY2xlYXIodnNpKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbkBAIC0xNDQ0OCwyNiArMTQ0NzMsMTcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdFx0XHRnb3RvIGVycl9uZXRkZXY7XG4gXHRcdFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQodnNpLVx1MDAzZW5ldGRldiwgXHUwMDI2cGYtXHUwMDNlZGV2bGlua19wb3J0KTtcbiBcdFx0fVxuLVx0XHRyZXQgPSByZWdpc3Rlcl9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byBlcnJfZGxfcG9ydDtcbi1cdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbi1cdFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVx1MDAzZW5ldGRldik7XG4tI2lmZGVmIENPTkZJR19JNDBFX0RDQlxuLVx0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbi1cdFx0aTQwZV9kY2JubF9zZXR1cCh2c2kpO1xuLSNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEk0MEVfVlNJX0ZESVI6XG4gXHRcdC8qIHNldCB1cCB2ZWN0b3JzIGFuZCByaW5ncyBpZiBuZWVkZWQgKi9cbi1cdFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdGdvdG8gZXJyX21zaXg7XG4tXG4gXHRcdHJldCA9IGk0MGVfYWxsb2NfcmluZ3ModnNpKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRnb3RvIGVycl9yaW5ncztcbiBcbitcdFx0cmV0ID0gaTQwZV92c2lfc2V0dXBfdmVjdG9ycyh2c2kpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyX3F2ZWM7XG4rXG4gXHRcdC8qIG1hcCBhbGwgb2YgdGhlIHJpbmdzIHRvIHRoZSBxX3ZlY3RvcnMgKi9cbiBcdFx0aTQwZV92c2lfbWFwX3JpbmdzX3RvX3ZlY3RvcnModnNpKTtcbiBcbkBAIC0xNDQ4NCwyMyArMTQ1MDAsMzcgQEAgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9zZXR1cChzdHJ1Y3QgaTQwZV9wZiAqcGYsIHU4IHR5cGUsXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBlcnJfY29uZmlnO1xuIFx0fVxuK1xuK1x0aWYgKHZzaS1cdTAwM2VuZXRkZXYpIHtcbitcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHZzaS1cdTAwM2VuZXRkZXYpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyX2NvbmZpZztcbitcdFx0dnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkID0gdHJ1ZTtcbitcdFx0bmV0aWZfY2Fycmllcl9vZmYodnNpLVx1MDAzZW5ldGRldik7XG4rI2lmZGVmIENPTkZJR19JNDBFX0RDQlxuK1x0XHQvKiBTZXR1cCBEQ0IgbmV0bGluayBpbnRlcmZhY2UgKi9cbitcdFx0aTQwZV9kY2JubF9zZXR1cCh2c2kpO1xuKyNlbmRpZiAvKiBDT05GSUdfSTQwRV9EQ0IgKi9cbitcdH1cbitcbiBcdHJldHVybiB2c2k7XG4gXG4gZXJyX2NvbmZpZzpcbitcdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4rZXJyX3F2ZWM6XG4gXHRpNDBlX3ZzaV9jbGVhcl9yaW5ncyh2c2kpO1xuIGVycl9yaW5nczpcbi1cdGk0MGVfdnNpX2ZyZWVfcV92ZWN0b3JzKHZzaSk7XG4tZXJyX21zaXg6XG4gXHRpZiAodnNpLVx1MDAzZW5ldGRldl9yZWdpc3RlcmVkKSB7XG4gXHRcdHZzaS1cdTAwM2VuZXRkZXZfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuIFx0XHR1bnJlZ2lzdGVyX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbi1cdFx0ZnJlZV9uZXRkZXYodnNpLVx1MDAzZW5ldGRldik7XG4tXHRcdHZzaS1cdTAwM2VuZXRkZXYgPSBOVUxMO1xuIFx0fVxuLWVycl9kbF9wb3J0OlxuIFx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG4gXHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuIGVycl9uZXRkZXY6XG4rXHRpZiAodnNpLVx1MDAzZW5ldGRldikge1xuK1x0XHRmcmVlX25ldGRldih2c2ktXHUwMDNlbmV0ZGV2KTtcbitcdFx0dnNpLVx1MDAzZW5ldGRldiA9IE5VTEw7XG4rXHR9XG4gXHRpNDBlX2FxX2RlbGV0ZV9lbGVtZW50KFx1MDAyNnBmLVx1MDAzZWh3LCB2c2ktXHUwMDNlc2VpZCwgTlVMTCk7XG4gZXJyX3ZzaTpcbiBcdGk0MGVfdnNpX2NsZWFyKHZzaSk7XG5AQCAtMTUwMzQsNyArMTUwNjQsNyBAQCBzdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aVxuIFx0XHRcdG1haW5fdnNpID0gaTQwZV92c2lfc2V0dXAocGYsIEk0MEVfVlNJX01BSU4sXG4gXHRcdFx0XHRcdFx0ICB1cGxpbmtfc2VpZCwgMCk7XG4gXHRcdGVsc2UgaWYgKHJlaW5pdClcbi1cdFx0XHRtYWluX3ZzaSA9IGk0MGVfdnNpX3JlaW5pdF9zZXR1cChtYWluX3ZzaSk7XG4rXHRcdFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xuIFx0XHRpZiAoIW1haW5fdnNpKSB7XG4gXHRcdFx0ZGV2X2luZm8oXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwic2V0dXAgb2YgTUFJTiBWU0kgZmFpbGVkXFxuXCIpO1xuIFx0XHRcdGk0MGVfY2xvdWRfZmlsdGVyX2V4aXQocGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9wdHAuY1xuaW5kZXggZmY2MmI1ZjJjODE1MDQuLmNhOTNkZjRkNjc4NTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfcHRwLmNcbkBAIC0xNTU2LDggKzE1NTYsOSBAQCB2b2lkIGk0MGVfcHRwX3N0b3Aoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0aWYgKHBmLVx1MDAzZXB0cF9jbG9jaykge1xuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihwZi1cdTAwM2VwdHBfY2xvY2spO1xuIFx0XHRwZi1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuLVx0XHRkZXZfaW5mbyhcdTAwMjZwZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCIlczogcmVtb3ZlZCBQSEMgb24gJXNcXG5cIiwgX19mdW5jX18sXG4tXHRcdFx0IG1haW5fdnNpLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbitcdFx0aWYgKG1haW5fdnNpKVxuK1x0XHRcdGRldl9pbmZvKFx1MDAyNnBmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIiVzOiByZW1vdmVkIFBIQyBvbiAlc1xcblwiLCBfX2Z1bmNfXyxcbitcdFx0XHRcdCBtYWluX3ZzaS1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHR9XG4gXG4gXHRpZiAoaTQwZV9pc19wdHBfcGluX2RldihcdTAwMjZwZi1cdTAwM2VodykpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjUzOjUzLjA4ODY4MDU0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDk1NDkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGk0MGVfbWFpbi5jYCBhbmQgYGk0MGVfcHRwLmNgIOKAkyBzcGVjaWZpY2FsbHksIGNoYW5nZXMgcmVsYXRlZCB0byBWU0kgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIHRvIGJlIGNsZWFuaW5nIHVwIFZTSSByZWluaXRpYWxpemF0aW9uLCBxdWV1ZSB2ZWN0b3IgYWxsb2NhdGlvbiwgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZy4gSSByZWNvZ25pemUgdGhpcyBhcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiSXMgdGhpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIFRoZSBpNDBlIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIFhMNzEwIEZhbWlseS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV2YWx1YXRlIGZ1enppbmcgcG90ZW50aWFsLiBXZSBuZWVkIHRvIGFzc2VzcyBpZiB3ZSBjYW4gZnV6eiB0aGlzLiBEb2VzIHN5emthbGxlciBvZmZlciBnb29kIHN1cHBvcnQgZm9yIGZ1enppbmcgUENJIGRldmljZXMgdmlhIHZpcnR1YWwgUENJIG9yIHNpbWlsYXIgdGVjaG5pcXVlcz8gSSByZWNhbGwgYHN5el9wY2lgIGFuZCBgc3l6X3VzYmAsIGJ1dCBQQ0kgZnV6emluZyBjYW4gYmUgdHJpY2tpZXIuIEl0IGRlcGVuZHMgb24gd2hldGhlciBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZSBpNDBlLCBvciBpZiBzeXprYWxsZXIgaXMgYWJsZSB0byB1c2UgZTEwMDBlL2k0MGUgZW11bGF0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgdGhpbmsgUUVNVSBkb2VzIGVtdWxhdGUgc29tZSBJbnRlbCBOSUNzISBJJ2QgYmV0dGVyIGNvbmZpcm0gaXQgaGFzIGk0MGUgZW11bGF0aW9uLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIHNwZWNpZmljIHByb21wdCBpcyB0YWxraW5nIGFib3V0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYnV0IEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIGk0MGUhIE5vdyB0aGF0IEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSBpNDBlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLlxuXG5NeSB0aG91Z2h0IHByb2Nlc3MgaXM6IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX0k0MEVgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCBpdCdzIGJhY2sgdG8gYSBzaW1wbGUgc2VhcmNoIGZvciBgQ09ORklHX0k0MEVgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDowMi4xMzgyMzI4MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMTE3Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJNDBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjk6Y29uZmlnIEk0MEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBYTDcxMCBGYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjUwOmNvbmZpZyBJNDBFX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2Mj1jb25maWcgSUFWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjg6Y29uZmlnIEk0MEVWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjY5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjU0OjAyLjI4ODM1NjA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MTAxMzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGk0MGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGhlcmUgaXMgYEk0MEVgLiBUaGUgcGF0Y2ggYWZmZWN0cyBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBhbmQgYGk0MGVfdnNpX3NldHVwYC4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgY2hlY2tpbmcgUUVNVSBzdXBwb3J0IGZvciBpNDBlLCBidXQgdGhlbiBJIHJlbWVtYmVyZWQgd2UncmUgbGV2ZXJhZ2luZyBzeXprYWxsZXIgYW5kIGl0cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIHRoYXQncyBub3QgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZS4gQmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLlxuXG5SaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAgYW5kIGBpNDBlX3ZzaV9zZXR1cGAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsIGR1cmluZyBkZXZpY2UgcHJvYmUgYW5kIGNvbmZpZ3VyYXRpb24uIExldCdzIHBpbnBvaW50IHRoZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBvciBhcmUgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgb25lcy5cblxuTGV0J3Mgc2VlOiBgaTQwZV92c2lfYWxsb2NfYXJyYXlzYCwgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgLCBgaTQwZV92c2lfcmVpbml0X3NldHVwYCwgYGk0MGVfdnNpX3NldHVwYCwgYGk0MGVfcHRwX3N0b3BgLCBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAsIGFuZCBgaTQwZV92c2lfZnJlZV9hcnJheXNgLiBUaG9zZSBhcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgZXhhY3RseSBob3cgdGhlIGNoYW5nZXMgdG8gYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGAgYW5kIGBpNDBlX3ZzaV9zZXR1cGAgaW1wYWN0IHRoZSBvdmVyYWxsIGZsb3cuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aG9zZSB0d28sIGFuZCB0aGVuIHNlZSBob3cgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIG1pZ2h0IGJlIGltcGFjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjU0OjA3LjUzOTM3MTU5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMyMTQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlX3ZzaV9yZWluaXRfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDIwNj1zdGF0aWMgaW50IGk0MGVfdnNpX3NldHVwX3ZlY3RvcnMoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNjI6ICogaTQwZV92c2lfcmVpbml0X3NldHVwIC0gcmV0dXJuIGFuZCByZWFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBWU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MjYzLSAqIEB2c2k6IHBvaW50ZXIgdG8gdGhlIHZzaS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNjktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQyNzA6c3RhdGljIHN0cnVjdCBpNDBlX3ZzaSAqaTQwZV92c2lfcmVpbml0X3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQyNzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBsb2NrX2FjcXVpcmVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNTAwNT1zdGF0aWMgaW50IGk0MGVfc2V0dXBfcGZfc3dpdGNoKHN0cnVjdCBpNDBlX3BmICpwZiwgYm9vbCByZWluaXQsIGJvb2wgbG9ja19hY3F1aXJlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTUwNjYtXFx0XFx0ZWxzZSBpZiAocmVpbml0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTUwNjc6XFx0XFx0XFx0bWFpbl92c2kgPSBpNDBlX3ZzaV9yZWluaXRfc2V0dXAobWFpbl92c2ksIGxvY2tfYWNxdWlyZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTUwNjgtXFx0XFx0aWYgKCFtYWluX3ZzaSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDowNy42Mjc2OTgzMzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODI4Nzc0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gIGBpNDBlX3ZzaV9hbGxvY19hcnJheXNgLCBgaTQwZV92c2lfZnJlZV9hcnJheXNgLCBgaTQwZV92c2lfc2V0dXBfdmVjdG9yc2AsIGBpNDBlX3ZzaV9yZWluaXRfc2V0dXBgLCBgaTQwZV92c2lfc2V0dXBgLCBgaTQwZV9wdHBfc3RvcGAsIGFuZCBgaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaWAg4oCTIHRob3NlIGFyZSBhbGwgZXhjZWxsZW50IGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgZm9jdXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRoYXQgaW1wYWN0IHRoZXNlIGZ1bmN0aW9ucy5cblxuQWhhLCBgQ09ORklHX0k0MEVgIGlzIHRoZSBtYWluIG9uZSwgYnV0IHRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgc2VjdGlvbiByZWZlcmVuY2luZyBgQ09ORklHX0k0MEVfRENCYC4gIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uOiBpdCBzZWVtcyBsaWtlIGBpNDBlX2RjYm5sX3NldHVwYCBpcyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0k0MEVfRENCYC4gU28gSSdsbCBpbmNsdWRlIGBJNDBFX0RDQmAgdG9vLCBqdXN0IHRvIGJlIGNvbXByZWhlbnNpdmUgYW5kIGNvdmVyIHRoYXQgY29uZGl0aW9uYWwgcGF0aC4gSXQncyBhIGJvb2xlYW4sIHdoaWNoIGlzIGdvb2QgdG8ga25vdywgc28gSSdsbCBiZSBzdXJlIHRvIGhhbmRsZSB0aGF0LiBJIHdhbnQgdG8gaW5jbHVkZSBhbGwgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuXG5cbkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIGFuZCB0aGUgaW5jbHVzaW9uIG9mIGJvdGggYEk0MEVgIGFuZCBgSTQwRV9EQ0JgLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmlwZSBmb3IgZnV6emluZy4gSSdtIHNhdGlzZmllZCB0aGF0IEkndmUgaWRlbnRpZmllZCBhbGwgdGhlIGtleSBhcmVhcy5cblxuU28sIGxldCBtZSBzb2xpZGlmeSB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOlxuXG4qICAgYGk0MGVfdnNpX2FsbG9jX2FycmF5c2BcbiogICBgaTQwZV92c2lfZnJlZV9hcnJheXNgXG4qICAgYGk0MGVfdnNpX3NldHVwX3ZlY3RvcnNgXG4qICAgYGk0MGVfdnNpX3JlaW5pdF9zZXR1cGBcbiogICBgaTQwZV92c2lfc2V0dXBgXG4qICAgYGk0MGVfcHRwX3N0b3BgXG4qICAgYGk0MGVfc2V0X251bV9yaW5nc19pbl92c2lgXG5cbkkgY2FuIGNhbGwgc2V0LXJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMwLCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDo1NDoxNS40NTY0NzU1MDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjcxNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJNDBFXCIsXG4gICAgXCJJNDBFX0RDQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImk0MGVfdnNpX2FsbG9jX2FycmF5c1wiLFxuICAgIFwiaTQwZV92c2lfZnJlZV9hcnJheXNcIixcbiAgICBcImk0MGVfdnNpX3NldHVwX3ZlY3RvcnNcIixcbiAgICBcImk0MGVfdnNpX3JlaW5pdF9zZXR1cFwiLFxuICAgIFwiaTQwZV92c2lfc2V0dXBcIixcbiAgICBcImk0MGVfcHRwX3N0b3BcIixcbiAgICBcImk0MGVfc2V0X251bV9yaW5nc19pbl92c2lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVlNJIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBsb2dpYyBpbiB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIGluY2x1ZGluZyBhcnJheSBhbGxvY2F0aW9uLCB2ZWN0b3Igc2V0dXAsIGFuZCBlcnJvciBoYW5kbGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgZHJpdmVyIGNvZGUgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSB2aXJ0dWFsIFBDSSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkk0MEVcIixcbiAgICBcIkk0MEVfRENCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaTQwZV92c2lfYWxsb2NfYXJyYXlzXCIsXG4gICAgXCJpNDBlX3ZzaV9mcmVlX2FycmF5c1wiLFxuICAgIFwiaTQwZV92c2lfc2V0dXBfdmVjdG9yc1wiLFxuICAgIFwiaTQwZV92c2lfcmVpbml0X3NldHVwXCIsXG4gICAgXCJpNDBlX3ZzaV9zZXR1cFwiLFxuICAgIFwiaTQwZV9wdHBfc3RvcFwiLFxuICAgIFwiaTQwZV9zZXRfbnVtX3JpbmdzX2luX3ZzaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBWU0kgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGxvZ2ljIGluIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgaW5jbHVkaW5nIGFycmF5IGFsbG9jYXRpb24sIHZlY3RvciBzZXR1cCwgYW5kIGVycm9yIGhhbmRsaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBkcml2ZXIgY29kZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHZpcnR1YWwgUENJIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpttzn[1] Phase: Succeeded StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 20:54:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 20:54:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2] Phase: Succeeded StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 20:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 20:54:50 +0000 UTC FinishedAt: 2026-07-01 20:55:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpttzn/series-workflowpttzn-convert-artifact-1464564106/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 20:56:43 +0000 UTC FinishedAt: 2026-07-01 21:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 20:56:43 +0000 UTC FinishedAt: 2026-07-01 21:22:38 +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:*16db53b9-17a8-4161-bf5e-5ba53cc1c9de,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-workflowpttzn/series-workflowpttzn-convert-artifact-1464564106/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": "77cb537b-b634-4712-803c-2657bab5650e", "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-workflowpttzn/series-workflowpttzn-build-action-2166105208/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 20:56:43 +0000 UTC FinishedAt: 2026-07-01 21:22:28 +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:*16db53b9-17a8-4161-bf5e-5ba53cc1c9de,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-workflowpttzn/series-workflowpttzn-convert-artifact-1464564106/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": "77cb537b-b634-4712-803c-2657bab5650e", "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-workflowpttzn/series-workflowpttzn-build-action-2166105208/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 21:22:38 +0000 UTC FinishedAt: 2026-07-01 21:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 21:22:38 +0000 UTC FinishedAt: 2026-07-01 21:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 21:22:38 +0000 UTC FinishedAt: 2026-07-01 21:22:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 21:22:38 +0000 UTC FinishedAt: 2026-07-01 21:22:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpttzn/series-workflowpttzn-convert-artifact-3630460709/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 21:22:48 +0000 UTC FinishedAt: 2026-07-01 21:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 21:22:48 +0000 UTC FinishedAt: 2026-07-01 21:24:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77cb537b-b634-4712-803c-2657bab5650e,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-workflowpttzn/series-workflowpttzn-build-action-2166105208/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-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 21:24:57 +0000 UTC FinishedAt: 2026-07-01 21:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 21:24:57 +0000 UTC FinishedAt: 2026-07-01 21:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 21:24:57 +0000 UTC FinishedAt: 2026-07-01 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 21:24:57 +0000 UTC FinishedAt: 2026-07-01 21:55:31 +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:*16db53b9-17a8-4161-bf5e-5ba53cc1c9de,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-workflowpttzn/series-workflowpttzn-convert-artifact-3630460709/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": "3e802e84-e67d-4030-96c7-ed8d2e24c8b5", "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-workflowpttzn/series-workflowpttzn-build-action-1872602993/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 21:24:57 +0000 UTC FinishedAt: 2026-07-01 21:55:21 +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:*16db53b9-17a8-4161-bf5e-5ba53cc1c9de,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-workflowpttzn/series-workflowpttzn-convert-artifact-3630460709/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": "3e802e84-e67d-4030-96c7-ed8d2e24c8b5", "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-workflowpttzn/series-workflowpttzn-build-action-1872602993/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 21:55:31 +0000 UTC FinishedAt: 2026-07-01 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 21:55:31 +0000 UTC FinishedAt: 2026-07-01 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 21:55:31 +0000 UTC FinishedAt: 2026-07-01 21:57:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 21:55:31 +0000 UTC FinishedAt: 2026-07-01 21:57:38 +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:*3e802e84-e67d-4030-96c7-ed8d2e24c8b5,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-workflowpttzn/series-workflowpttzn-build-action-1872602993/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-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +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":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"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:*77cb537b-b634-4712-803c-2657bab5650e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e802e84-e67d-4030-96c7-ed8d2e24c8b5,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-workflowpttzn/series-workflowpttzn-build-action-2166105208/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-workflowpttzn/series-workflowpttzn-build-action-1872602993/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 21:58:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 21:57:56 +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":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"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-workflowpttzn/series-workflowpttzn-convert-artifact-1124211626/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 21:57:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 21:57:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 21:57:47 +0000 UTC FinishedAt: 2026-07-01 21:57:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 21:58:08 +0000 UTC FinishedAt: 2026-07-01 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpttzn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["i40e_vsi_alloc_arrays","i40e_vsi_free_arrays","i40e_vsi_setup_vectors","i40e_vsi_reinit_setup","i40e_vsi_setup","i40e_ptp_stop","i40e_set_num_rings_in_vsi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["I40E","I40E_DCB"],"series_id":"5354a32e-cb93-4eda-89be-a19a739deee0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 21:58:08 +0000 UTC FinishedAt: 2026-07-01 22:49:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77cb537b-b634-4712-803c-2657bab5650e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e802e84-e67d-4030-96c7-ed8d2e24c8b5,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-workflowpttzn/series-workflowpttzn-build-action-2166105208/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-workflowpttzn/series-workflowpttzn-build-action-1872602993/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-workflowpttzn/series-workflowpttzn-convert-artifact-1124211626/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,}