Name: series-workflownmfmg Phase: Failed StartedAt: 2026-06-29 04:17:19 +0000 UTC FinishedAt: 2026-06-29 04:31:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmfmg[0] Phase: Succeeded StartedAt: 2026-06-29 04:17:19 +0000 UTC FinishedAt: 2026-06-29 04:31:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmfmg[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 04:17:19 +0000 UTC FinishedAt: 2026-06-29 04:31:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA0OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVx1MDAzZWlfcHJpdmF0ZS4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwNDoyOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uY1xuaW5kZXggYjUxZjgzYzk3MGJiMzcuLjFjMzllOWRmYzUyNDE2IDEwMDY0NFxuLS0tIGEvbW0vc2htZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2htZW0uY1xuQEAgLTE2NTcsMTAgJiM0MzsxNjU3LDEwIEBAIGludCBzaG1lbV93cml0ZW91dChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgc3dhcF9pb2NiICoqcGx1ZyxcbiBcdCAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS5cbiBcdCAqL1xuIFx0aWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkge1xuLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSB7XG4mIzQzO1x0XHRpZiAoUkVBRF9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbiBcdFx0XHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuJiM0MztcdFx0XHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdFx0XHRpZiAoc2htZW1fZmFsbG9jIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBpbmRleCBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjQ3LDcgJiM0MzsyNjQ3LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmFsbG9jX3dhaXQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHR2bV9mYXVsdF90IHJldCA9IDA7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdHNobWVtX2ZhbGxvYyA9IGlub2RlLVx1MDAzZWlfcHJpdmF0ZTtcbiYjNDM7XHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHQgICAgc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZtZi1cdTAwM2VwZ29mZiBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjkzLDcgJiM0MzsyNjkzLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHQgKiBUcmluaXR5IGZpbmRzIHRoYXQgcHJvYmluZyBhIGhvbGUgd2hpY2ggdG1wZnMgaXMgcHVuY2hpbmcgY2FuXG4gXHQgKiBwcmV2ZW50IHRoZSBob2xlLXB1bmNoIGZyb20gZXZlciBjb21wbGV0aW5nOiBub3RlZCBpbiBpX3ByaXZhdGUuXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpKSkge1xuIFx0XHRyZXQgPSBzaG1lbV9mYWxsb2Nfd2FpdCh2bWYsIGlub2RlKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuQEAgLTM2MzAsNyAmIzQzOzM2MzAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRzaG1lbV9mYWxsb2Muc3RhcnQgPSAodTY0KXVubWFwX3N0YXJ0IFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFx0XHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgJiM0MzsgMSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuLVx0XHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4mIzQzO1x0XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiBcbiBcdFx0aWYgKCh1NjQpdW5tYXBfZW5kIFx1MDAzZSAodTY0KXVubWFwX3N0YXJ0KVxuQEAgLTM2NDAsNyAmIzQzOzM2NDAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHQvKiBObyBuZWVkIHRvIHVubWFwIGFnYWluOiBob2xlLXB1bmNoaW5nIGxlYXZlcyBDT1dlZCBwYWdlcyAqL1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBOVUxMKTtcbiBcdFx0d2FrZV91cF9hbGwoXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNnNobWVtX2ZhbGxvY193YWl0cS5oZWFkKSk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG5AQCAtMzY3Miw3ICYjNDM7MzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRzaG1lbV9mYWxsb2MubnJfZmFsbG9jZWQgPSAwO1xuIFx0c2htZW1fZmFsbG9jLm5yX3Vuc3dhcHBlZCA9IDA7XG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IFx1MDAyNnNobWVtX2ZhbGxvYztcbiYjNDM7XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHQvKlxuQEAgLTM3NDcsNyAmIzQzOzM3NDcsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRpX3NpemVfd3JpdGUoaW5vZGUsIG9mZnNldCAmIzQzOyBsZW4pO1xuIHVuZG9uZTpcbiBcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuLVx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiYjNDM7XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuIG91dDpcbiBcdGlmICghZXJyb3IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDQ6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCkgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBhbmQgZml4IGRhdGEgcmFjZXMgb24gaW5vZGUtXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZjY5NGNlN2I0MWY5ZmQ0YzdjM2Q5ZjBiNzMxNjAyMWM5MDNkMmUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMDQ6Mjk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0Ci0tLSBhL21tL3NobWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2htZW0uYwpAQCAtMTY1NywxMCAmIzQzOzE2NTcsMTAgQEAgaW50IHNobWVtX3dyaXRlb3V0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBzd2FwX2lvY2IgKipwbHVnLAogCSAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS4KIAkgKi8KIAlpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7Ci0JCWlmIChpbm9kZS0mZ3Q7aV9wcml2YXRlKSB7CiYjNDM7CQlpZiAoUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpKSB7CiAJCQlzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7CiAJCQlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKLQkJCXNobWVtX2ZhbGxvYyA9IGlub2RlLSZndDtpX3ByaXZhdGU7CiYjNDM7CQkJc2htZW1fZmFsbG9jID0gUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpOwogCQkJaWYgKHNobWVtX2ZhbGxvYyAmYW1wOyZhbXA7CiAJCQkgICAgIXNobWVtX2ZhbGxvYy0mZ3Q7d2FpdHEgJmFtcDsmYW1wOwogCQkJICAgIGluZGV4ICZndDs9IHNobWVtX2ZhbGxvYy0mZ3Q7c3RhcnQgJmFtcDsmYW1wOwpAQCAtMjY0Nyw3ICYjNDM7MjY0Nyw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhbGxvY193YWl0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCXZtX2ZhdWx0X3QgcmV0ID0gMDsKIAogCXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwotCXNobWVtX2ZhbGxvYyA9IGlub2RlLSZndDtpX3ByaXZhdGU7CiYjNDM7CXNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKTsKIAlpZiAoc2htZW1fZmFsbG9jICZhbXA7JmFtcDsKIAkgICAgc2htZW1fZmFsbG9jLSZndDt3YWl0cSAmYW1wOyZhbXA7CiAJICAgIHZtZi0mZ3Q7cGdvZmYgJmd0Oz0gc2htZW1fZmFsbG9jLSZndDtzdGFydCAmYW1wOyZhbXA7CkBAIC0yNjkzLDcgJiM0MzsyNjkzLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJICogVHJpbml0eSBmaW5kcyB0aGF0IHByb2JpbmcgYSBob2xlIHdoaWNoIHRtcGZzIGlzIHB1bmNoaW5nIGNhbgogCSAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS4KIAkgKi8KLQlpZiAodW5saWtlbHkoaW5vZGUtJmd0O2lfcHJpdmF0ZSkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkpIHsKIAkJcmV0ID0gc2htZW1fZmFsbG9jX3dhaXQodm1mLCBpbm9kZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtMzYzMCw3ICYjNDM7MzYzMCw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCXNobWVtX2ZhbGxvYy5zdGFydCA9ICh1NjQpdW5tYXBfc3RhcnQgJmd0OyZndDsgUEFHRV9TSElGVDsKIAkJc2htZW1fZmFsbG9jLm5leHQgPSAodW5tYXBfZW5kICYjNDM7IDEpICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiAJCXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwotCQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsICZhbXA7c2htZW1fZmFsbG9jKTsKIAkJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKIAogCQlpZiAoKHU2NCl1bm1hcF9lbmQgJmd0OyAodTY0KXVubWFwX3N0YXJ0KQpAQCAtMzY0MCw3ICYjNDM7MzY0MCw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCS8qIE5vIG5lZWQgdG8gdW5tYXAgYWdhaW46IGhvbGUtcHVuY2hpbmcgbGVhdmVzIENPV2VkIHBhZ2VzICovCiAKIAkJc3Bpbl9sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7Ci0JCWlub2RlLSZndDtpX3ByaXZhdGUgPSBOVUxMOwomIzQzOwkJV1JJVEVfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlLCBOVUxMKTsKIAkJd2FrZV91cF9hbGwoJmFtcDtzaG1lbV9mYWxsb2Nfd2FpdHEpOwogCQlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtzaG1lbV9mYWxsb2Nfd2FpdHEuaGVhZCkpOwogCQlzcGluX3VubG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwpAQCAtMzY3Miw3ICYjNDM7MzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJc2htZW1fZmFsbG9jLm5yX2ZhbGxvY2VkID0gMDsKIAlzaG1lbV9mYWxsb2MubnJfdW5zd2FwcGVkID0gMDsKIAlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKLQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgJmFtcDtzaG1lbV9mYWxsb2MpOwogCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiAKIAkvKgpAQCAtMzc0Nyw3ICYjNDM7Mzc0Nyw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCWlfc2l6ZV93cml0ZShpbm9kZSwgb2Zmc2V0ICYjNDM7IGxlbik7CiB1bmRvbmU6CiAJc3Bpbl9sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7Ci0JaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgTlVMTCk7CiAJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKIG91dDoKIAlpZiAoIWVycm9yKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODAzCgkJCQkJCQlvdXRwdXQ6IDc1CgkJCQkJCQl0aG91Z2h0czogNzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYWNjZXNzZXMgdG8gYGlub2RlLSZndDtpX3ByaXZhdGVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O0RhdGEgcmFjZSBmaXhlcyAqYXJlKiBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIG1heWJlIHdlIGZ1eno/JiMzNDsgQnV0IHRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcHJvbXB0LiBJdCYjMzk7cyByZWFsbHkga2V5IGhlcmU6ICYjMzQ7Q2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuCgpBdCBmaXJzdCBnbGFuY2UsIGl0IGZlZWxzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGNvbmN1cnJlbmN5IGlzIGludm9sdmVkLiBCdXQgdGhlbiBJIHNhdyBgUkVBRF9PTkNFYCBhbmQgYFdSSVRFX09OQ0VgLiBUaG9zZSBhcmVuJiMzOTt0IGFib3V0IGNoYW5naW5nIHRoZSAqbG9naWMqIG9mIHRoZSBjb2RlOyB0aGV5JiMzOTtyZSBjb21waWxlciBiYXJyaWVycy4gVGhleSYjMzk7cmUgZXhwbGljaXRseSAqcHJldmVudGluZyogdGhlIGNvbXBpbGVyIGZyb20gb3B0aW1pemluZyBpbiB3YXlzIHRoYXQgY291bGQgaW50cm9kdWNlIGRhdGEgcmFjZXMuIFRoZXkgZG9uJiMzOTt0IGNoYW5nZSAqd2hhdCogdGhlIGNvZGUgZG9lcywganVzdCAqaG93KiB0aGUgY29tcGlsZXIgdGhpbmtzIGFib3V0IGl0IHdoZW4gZ2VuZXJhdGluZyB0aGUgaW5zdHJ1Y3Rpb25zLgoKU28sIHdoaWxlIHRoZXNlIGNoYW5nZXMgYXJlIGFic29sdXRlbHkgY3JpdGljYWwgZm9yIGNvcnJlY3RuZXNzLCBhbmQgd2hpbGUgc2htZW0gaXMgYSBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCwgZnV6emluZyAqdGhpcyBzcGVjaWZpYyBwYXRjaCogd291bGRuJiMzOTt0IHVuY292ZXIgbmV3IGxvZ2ljIGJ1Z3MuIEl0JiMzOTtzIGFib3V0IGVuc3VyaW5nIHRoZSBjdXJyZW50IGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBpbiBhIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQsIGJ1dCB0aGUgbG9naWMgaXRzZWxmIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgZnV6emluZyB3b3VsZCBleGVyY2lzZSB0aGUgZXhpc3RpbmcgY29kZSBwYXRocywgYnV0IG5vdCBpbiBhIHdheSB0aGF0IHdvdWxkIHRhcmdldCB0aGUgaW50cm9kdWNlZCBjb25jdXJyZW5jeS1zYWZlIGFjY2Vzc2VzLgoKSSB0b29rIGEgZmluYWwgbG9vayBhdCB0aGUgY29kZTogaXQmIzM5O3MgcHVyZSBtYWNybyBhZGRpdGlvbnMsIGFzIEkgc3VzcGVjdGVkLgoKYGBgYwotCQlpZiAoaW5vZGUtJmd0O2lfcHJpdmF0ZSkgewomIzQzOwkJaWYgKFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkgewpgYGAKYGBgYwotCQkJc2htZW1fZmFsbG9jID0gaW5vZGUtJmd0O2lfcHJpdmF0ZTsKJiM0MzsJCQlzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSk7CmBgYApgYGBjCi0Jc2htZW1fZmFsbG9jID0gaW5vZGUtJmd0O2lfcHJpdmF0ZTsKJiM0MzsJc2htZW1fZmFsbG9jID0gUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpOwpgYGAKYGBgYwotCWlmICh1bmxpa2VseShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkgewomIzQzOwlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpKSkgewpgYGAKYGBgYwotCQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsICZhbXA7c2htZW1fZmFsbG9jKTsKYGBgCmBgYGMKLQkJaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsIE5VTEwpOwpgYGAKYGBgYwotCWlub2RlLSZndDtpX3ByaXZhdGUgPSAmYW1wO3NobWVtX2ZhbGxvYzsKJiM0MzsJV1JJVEVfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlLCAmYW1wO3NobWVtX2ZhbGxvYyk7CmBgYApgYGBjCi0JaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgTlVMTCk7CmBgYAoKVGh1cywgKnB1cmVseSogYWRkaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGEgS0NTQU4gZGF0YSByYWNlIGZpeC4gTm8gbmV3IGxvZ2ljIG9yIGV4ZWN1dGlvbiBwYXRoLiBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVx1MDAzZWlfcHJpdmF0ZS4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA0OjI5OjMxLjUyNTM0MzMwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTczNzgwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTozMS41MjUzNTAwOTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjgzMjMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDQ6Mjk6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmNcXG5pbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0XFxuLS0tIGEvbW0vc2htZW0uY1xcbisrKyBiL21tL3NobWVtLmNcXG5AQCAtMTY1NywxMCArMTY1NywxMCBAQCBpbnQgc2htZW1fd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcsXFxuIFxcdCAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS5cXG4gXFx0ICovXFxuIFxcdGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHtcXG4tXFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUpIHtcXG4rXFx0XFx0aWYgKFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKSkge1xcbiBcXHRcXHRcXHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XFxuIFxcdFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdFxcdFxcdHNobWVtX2ZhbGxvYyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuK1xcdFxcdFxcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKTtcXG4gXFx0XFx0XFx0aWYgKHNobWVtX2ZhbGxvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgIXNobWVtX2ZhbGxvYy1cXHUwMDNld2FpdHEgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGluZGV4IFxcdTAwM2U9IHNobWVtX2ZhbGxvYy1cXHUwMDNlc3RhcnQgXFx1MDAyNlxcdTAwMjZcXG5AQCAtMjY0Nyw3ICsyNjQ3LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmFsbG9jX3dhaXQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuIFxcdHZtX2ZhdWx0X3QgcmV0ID0gMDtcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdHNobWVtX2ZhbGxvYyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuK1xcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKTtcXG4gXFx0aWYgKHNobWVtX2ZhbGxvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgc2htZW1fZmFsbG9jLVxcdTAwM2V3YWl0cSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgdm1mLVxcdTAwM2VwZ29mZiBcXHUwMDNlPSBzaG1lbV9mYWxsb2MtXFx1MDAzZXN0YXJ0IFxcdTAwMjZcXHUwMDI2XFxuQEAgLTI2OTMsNyArMjY5Myw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHQgKiBUcmluaXR5IGZpbmRzIHRoYXQgcHJvYmluZyBhIGhvbGUgd2hpY2ggdG1wZnMgaXMgcHVuY2hpbmcgY2FuXFxuIFxcdCAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKSkge1xcbitcXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUpKSkge1xcbiBcXHRcXHRyZXQgPSBzaG1lbV9mYWxsb2Nfd2FpdCh2bWYsIGlub2RlKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzYzMCw3ICszNjMwLDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0c2htZW1fZmFsbG9jLnN0YXJ0ID0gKHU2NCl1bm1hcF9zdGFydCBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXHRcXHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgKyAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi1cXHRcXHRpbm9kZS1cXHUwMDNlaV9wcml2YXRlID0gXFx1MDAyNnNobWVtX2ZhbGxvYztcXG4rXFx0XFx0V1JJVEVfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlLCBcXHUwMDI2c2htZW1fZmFsbG9jKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXG4gXFx0XFx0aWYgKCh1NjQpdW5tYXBfZW5kIFxcdTAwM2UgKHU2NCl1bm1hcF9zdGFydClcXG5AQCAtMzY0MCw3ICszNjQwLDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0LyogTm8gbmVlZCB0byB1bm1hcCBhZ2FpbjogaG9sZS1wdW5jaGluZyBsZWF2ZXMgQ09XZWQgcGFnZXMgKi9cXG4gXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdFxcdGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgPSBOVUxMO1xcbitcXHRcXHRXUklURV9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xcbiBcXHRcXHR3YWtlX3VwX2FsbChcXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxKTtcXG4gXFx0XFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZzaG1lbV9mYWxsb2Nfd2FpdHEuaGVhZCkpO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuQEAgLTM2NzIsNyArMzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdHNobWVtX2ZhbGxvYy5ucl9mYWxsb2NlZCA9IDA7XFxuIFxcdHNobWVtX2ZhbGxvYy5ucl91bnN3YXBwZWQgPSAwO1xcbiBcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi1cXHRpbm9kZS1cXHUwMDNlaV9wcml2YXRlID0gXFx1MDAyNnNobWVtX2ZhbGxvYztcXG4rXFx0V1JJVEVfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlLCBcXHUwMDI2c2htZW1fZmFsbG9jKTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXG4gXFx0LypcXG5AQCAtMzc0Nyw3ICszNzQ3LDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0aV9zaXplX3dyaXRlKGlub2RlLCBvZmZzZXQgKyBsZW4pO1xcbiB1bmRvbmU6XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgPSBOVUxMO1xcbitcXHRXUklURV9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuIG91dDpcXG4gXFx0aWYgKCFlcnJvcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDQ6Mjk6MzIuMTg4NzU4NDI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTEwMzU4NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwNDoyOToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NobWVtLmMgYi9tbS9zaG1lbS5jXG5pbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0XG4tLS0gYS9tbS9zaG1lbS5jXG4rKysgYi9tbS9zaG1lbS5jXG5AQCAtMTY1NywxMCArMTY1NywxMCBAQCBpbnQgc2htZW1fd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcsXG4gXHQgKiByZWFjdGl2YXRlIHRoZSBmb2xpbywgYW5kIGxldCBzaG1lbV9mYWxsb2NhdGUoKSBxdWl0IHdoZW4gdG9vIG1hbnkuXG4gXHQgKi9cbiBcdGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHtcbi1cdFx0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbiBcdFx0XHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuK1x0XHRcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuIFx0XHRcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgICFzaG1lbV9mYWxsb2MtXHUwMDNld2FpdHEgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGluZGV4IFx1MDAzZT0gc2htZW1fZmFsbG9jLVx1MDAzZXN0YXJ0IFx1MDAyNlx1MDAyNlxuQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhbGxvY193YWl0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0dm1fZmF1bHRfdCByZXQgPSAwO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRzaG1lbV9mYWxsb2MgPSBpbm9kZS1cdTAwM2VpX3ByaXZhdGU7XG4rXHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHQgICAgc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZtZi1cdTAwM2VwZ29mZiBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjkzLDcgKzI2OTMsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBzaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdCAqIFRyaW5pdHkgZmluZHMgdGhhdCBwcm9iaW5nIGEgaG9sZSB3aGljaCB0bXBmcyBpcyBwdW5jaGluZyBjYW5cbiBcdCAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbitcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkpIHtcbiBcdFx0cmV0ID0gc2htZW1fZmFsbG9jX3dhaXQodm1mLCBpbm9kZSk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbkBAIC0zNjMwLDcgKzM2MzAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRzaG1lbV9mYWxsb2Muc3RhcnQgPSAodTY0KXVubWFwX3N0YXJ0IFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFx0XHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgKyAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IFx1MDAyNnNobWVtX2ZhbGxvYztcbitcdFx0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIFx1MDAyNnNobWVtX2ZhbGxvYyk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHRcdGlmICgodTY0KXVubWFwX2VuZCBcdTAwM2UgKHU2NCl1bm1hcF9zdGFydClcbkBAIC0zNjQwLDcgKzM2NDAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHQvKiBObyBuZWVkIHRvIHVubWFwIGFnYWluOiBob2xlLXB1bmNoaW5nIGxlYXZlcyBDT1dlZCBwYWdlcyAqL1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbitcdFx0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xuIFx0XHR3YWtlX3VwX2FsbChcdTAwMjZzaG1lbV9mYWxsb2Nfd2FpdHEpO1xuIFx0XHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxLmhlYWQpKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbkBAIC0zNjcyLDcgKzM2NzIsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0c2htZW1fZmFsbG9jLm5yX2ZhbGxvY2VkID0gMDtcbiBcdHNobWVtX2ZhbGxvYy5ucl91bnN3YXBwZWQgPSAwO1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHQvKlxuQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRcdGlfc2l6ZV93cml0ZShpbm9kZSwgb2Zmc2V0ICsgbGVuKTtcbiB1bmRvbmU6XG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuIG91dDpcbiBcdGlmICghZXJyb3IpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTozMi4xODg3NTk4OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTEwMzM3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9zaG1lbS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGFjY2Vzc2VzIHRvIGBpbm9kZS1cdTAwM2VpX3ByaXZhdGVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCBcIkRhdGEgcmFjZSBmaXhlcyAqYXJlKiBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIG1heWJlIHdlIGZ1eno/XCIgQnV0IHRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcHJvbXB0LiBJdCdzIHJlYWxseSBrZXkgaGVyZTogXCJDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIi5cblxuQXQgZmlyc3QgZ2xhbmNlLCBpdCBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBjb25jdXJyZW5jeSBpcyBpbnZvbHZlZC4gQnV0IHRoZW4gSSBzYXcgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYC4gVGhvc2UgYXJlbid0IGFib3V0IGNoYW5naW5nIHRoZSAqbG9naWMqIG9mIHRoZSBjb2RlOyB0aGV5J3JlIGNvbXBpbGVyIGJhcnJpZXJzLiBUaGV5J3JlIGV4cGxpY2l0bHkgKnByZXZlbnRpbmcqIHRoZSBjb21waWxlciBmcm9tIG9wdGltaXppbmcgaW4gd2F5cyB0aGF0IGNvdWxkIGludHJvZHVjZSBkYXRhIHJhY2VzLiBUaGV5IGRvbid0IGNoYW5nZSAqd2hhdCogdGhlIGNvZGUgZG9lcywganVzdCAqaG93KiB0aGUgY29tcGlsZXIgdGhpbmtzIGFib3V0IGl0IHdoZW4gZ2VuZXJhdGluZyB0aGUgaW5zdHJ1Y3Rpb25zLlxuXG5Tbywgd2hpbGUgdGhlc2UgY2hhbmdlcyBhcmUgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgY29ycmVjdG5lc3MsIGFuZCB3aGlsZSBzaG1lbSBpcyBhIHBhcnQgb2YgdGhlIGNvcmUga2VybmVsLCBmdXp6aW5nICp0aGlzIHNwZWNpZmljIHBhdGNoKiB3b3VsZG4ndCB1bmNvdmVyIG5ldyBsb2dpYyBidWdzLiBJdCdzIGFib3V0IGVuc3VyaW5nIHRoZSBjdXJyZW50IGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBpbiBhIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQsIGJ1dCB0aGUgbG9naWMgaXRzZWxmIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgZnV6emluZyB3b3VsZCBleGVyY2lzZSB0aGUgZXhpc3RpbmcgY29kZSBwYXRocywgYnV0IG5vdCBpbiBhIHdheSB0aGF0IHdvdWxkIHRhcmdldCB0aGUgaW50cm9kdWNlZCBjb25jdXJyZW5jeS1zYWZlIGFjY2Vzc2VzLlxuXG5JIHRvb2sgYSBmaW5hbCBsb29rIGF0IHRoZSBjb2RlOiBpdCdzIHB1cmUgbWFjcm8gYWRkaXRpb25zLCBhcyBJIHN1c3BlY3RlZC5cblxuYGBgY1xuLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSB7XG4rXHRcdGlmIChSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkge1xuYGBgXG5gYGBjXG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuK1x0XHRcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuYGBgXG5gYGBjXG4tXHRzaG1lbV9mYWxsb2MgPSBpbm9kZS1cdTAwM2VpX3ByaXZhdGU7XG4rXHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbmBgYFxuYGBgY1xuLVx0aWYgKHVubGlrZWx5KGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbitcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkpIHtcbmBgYFxuYGBgY1xuLVx0XHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4rXHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBcdTAwMjZzaG1lbV9mYWxsb2MpO1xuYGBgXG5gYGBjXG4tXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBOVUxMKTtcbmBgYFxuYGBgY1xuLVx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gXHUwMDI2c2htZW1fZmFsbG9jO1xuK1x0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIFx1MDAyNnNobWVtX2ZhbGxvYyk7XG5gYGBcbmBgYGNcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG5gYGBcblxuVGh1cywgKnB1cmVseSogYWRkaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGEgS0NTQU4gZGF0YSByYWNlIGZpeC4gTm8gbmV3IGxvZ2ljIG9yIGV4ZWN1dGlvbiBwYXRoLiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDMsIk91dHB1dFRva2VucyI6NzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTo0MS42OTkwOTkzNTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVxcdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVxcdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownmfmg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 04:17:19 +0000 UTC FinishedAt: 2026-06-29 04:29:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA0OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVx1MDAzZWlfcHJpdmF0ZS4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwNDoyOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uY1xuaW5kZXggYjUxZjgzYzk3MGJiMzcuLjFjMzllOWRmYzUyNDE2IDEwMDY0NFxuLS0tIGEvbW0vc2htZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2htZW0uY1xuQEAgLTE2NTcsMTAgJiM0MzsxNjU3LDEwIEBAIGludCBzaG1lbV93cml0ZW91dChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgc3dhcF9pb2NiICoqcGx1ZyxcbiBcdCAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS5cbiBcdCAqL1xuIFx0aWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkge1xuLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSB7XG4mIzQzO1x0XHRpZiAoUkVBRF9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbiBcdFx0XHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuJiM0MztcdFx0XHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdFx0XHRpZiAoc2htZW1fZmFsbG9jIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBpbmRleCBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjQ3LDcgJiM0MzsyNjQ3LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmFsbG9jX3dhaXQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHR2bV9mYXVsdF90IHJldCA9IDA7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdHNobWVtX2ZhbGxvYyA9IGlub2RlLVx1MDAzZWlfcHJpdmF0ZTtcbiYjNDM7XHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHQgICAgc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZtZi1cdTAwM2VwZ29mZiBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjkzLDcgJiM0MzsyNjkzLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHQgKiBUcmluaXR5IGZpbmRzIHRoYXQgcHJvYmluZyBhIGhvbGUgd2hpY2ggdG1wZnMgaXMgcHVuY2hpbmcgY2FuXG4gXHQgKiBwcmV2ZW50IHRoZSBob2xlLXB1bmNoIGZyb20gZXZlciBjb21wbGV0aW5nOiBub3RlZCBpbiBpX3ByaXZhdGUuXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpKSkge1xuIFx0XHRyZXQgPSBzaG1lbV9mYWxsb2Nfd2FpdCh2bWYsIGlub2RlKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuQEAgLTM2MzAsNyAmIzQzOzM2MzAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRzaG1lbV9mYWxsb2Muc3RhcnQgPSAodTY0KXVubWFwX3N0YXJ0IFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFx0XHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgJiM0MzsgMSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuLVx0XHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4mIzQzO1x0XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiBcbiBcdFx0aWYgKCh1NjQpdW5tYXBfZW5kIFx1MDAzZSAodTY0KXVubWFwX3N0YXJ0KVxuQEAgLTM2NDAsNyAmIzQzOzM2NDAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHQvKiBObyBuZWVkIHRvIHVubWFwIGFnYWluOiBob2xlLXB1bmNoaW5nIGxlYXZlcyBDT1dlZCBwYWdlcyAqL1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBOVUxMKTtcbiBcdFx0d2FrZV91cF9hbGwoXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNnNobWVtX2ZhbGxvY193YWl0cS5oZWFkKSk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG5AQCAtMzY3Miw3ICYjNDM7MzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRzaG1lbV9mYWxsb2MubnJfZmFsbG9jZWQgPSAwO1xuIFx0c2htZW1fZmFsbG9jLm5yX3Vuc3dhcHBlZCA9IDA7XG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IFx1MDAyNnNobWVtX2ZhbGxvYztcbiYjNDM7XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHQvKlxuQEAgLTM3NDcsNyAmIzQzOzM3NDcsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRpX3NpemVfd3JpdGUoaW5vZGUsIG9mZnNldCAmIzQzOyBsZW4pO1xuIHVuZG9uZTpcbiBcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuLVx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiYjNDM7XHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuIG91dDpcbiBcdGlmICghZXJyb3IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDQ6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCkgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBhbmQgZml4IGRhdGEgcmFjZXMgb24gaW5vZGUtXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZjY5NGNlN2I0MWY5ZmQ0YzdjM2Q5ZjBiNzMxNjAyMWM5MDNkMmUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMDQ6Mjk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0Ci0tLSBhL21tL3NobWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2htZW0uYwpAQCAtMTY1NywxMCAmIzQzOzE2NTcsMTAgQEAgaW50IHNobWVtX3dyaXRlb3V0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBzd2FwX2lvY2IgKipwbHVnLAogCSAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS4KIAkgKi8KIAlpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7Ci0JCWlmIChpbm9kZS0mZ3Q7aV9wcml2YXRlKSB7CiYjNDM7CQlpZiAoUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpKSB7CiAJCQlzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7CiAJCQlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKLQkJCXNobWVtX2ZhbGxvYyA9IGlub2RlLSZndDtpX3ByaXZhdGU7CiYjNDM7CQkJc2htZW1fZmFsbG9jID0gUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpOwogCQkJaWYgKHNobWVtX2ZhbGxvYyAmYW1wOyZhbXA7CiAJCQkgICAgIXNobWVtX2ZhbGxvYy0mZ3Q7d2FpdHEgJmFtcDsmYW1wOwogCQkJICAgIGluZGV4ICZndDs9IHNobWVtX2ZhbGxvYy0mZ3Q7c3RhcnQgJmFtcDsmYW1wOwpAQCAtMjY0Nyw3ICYjNDM7MjY0Nyw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhbGxvY193YWl0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCXZtX2ZhdWx0X3QgcmV0ID0gMDsKIAogCXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwotCXNobWVtX2ZhbGxvYyA9IGlub2RlLSZndDtpX3ByaXZhdGU7CiYjNDM7CXNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKTsKIAlpZiAoc2htZW1fZmFsbG9jICZhbXA7JmFtcDsKIAkgICAgc2htZW1fZmFsbG9jLSZndDt3YWl0cSAmYW1wOyZhbXA7CiAJICAgIHZtZi0mZ3Q7cGdvZmYgJmd0Oz0gc2htZW1fZmFsbG9jLSZndDtzdGFydCAmYW1wOyZhbXA7CkBAIC0yNjkzLDcgJiM0MzsyNjkzLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJICogVHJpbml0eSBmaW5kcyB0aGF0IHByb2JpbmcgYSBob2xlIHdoaWNoIHRtcGZzIGlzIHB1bmNoaW5nIGNhbgogCSAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS4KIAkgKi8KLQlpZiAodW5saWtlbHkoaW5vZGUtJmd0O2lfcHJpdmF0ZSkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkpIHsKIAkJcmV0ID0gc2htZW1fZmFsbG9jX3dhaXQodm1mLCBpbm9kZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtMzYzMCw3ICYjNDM7MzYzMCw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCXNobWVtX2ZhbGxvYy5zdGFydCA9ICh1NjQpdW5tYXBfc3RhcnQgJmd0OyZndDsgUEFHRV9TSElGVDsKIAkJc2htZW1fZmFsbG9jLm5leHQgPSAodW5tYXBfZW5kICYjNDM7IDEpICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiAJCXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwotCQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsICZhbXA7c2htZW1fZmFsbG9jKTsKIAkJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKIAogCQlpZiAoKHU2NCl1bm1hcF9lbmQgJmd0OyAodTY0KXVubWFwX3N0YXJ0KQpAQCAtMzY0MCw3ICYjNDM7MzY0MCw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCS8qIE5vIG5lZWQgdG8gdW5tYXAgYWdhaW46IGhvbGUtcHVuY2hpbmcgbGVhdmVzIENPV2VkIHBhZ2VzICovCiAKIAkJc3Bpbl9sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7Ci0JCWlub2RlLSZndDtpX3ByaXZhdGUgPSBOVUxMOwomIzQzOwkJV1JJVEVfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlLCBOVUxMKTsKIAkJd2FrZV91cF9hbGwoJmFtcDtzaG1lbV9mYWxsb2Nfd2FpdHEpOwogCQlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtzaG1lbV9mYWxsb2Nfd2FpdHEuaGVhZCkpOwogCQlzcGluX3VubG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwpAQCAtMzY3Miw3ICYjNDM7MzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJc2htZW1fZmFsbG9jLm5yX2ZhbGxvY2VkID0gMDsKIAlzaG1lbV9mYWxsb2MubnJfdW5zd2FwcGVkID0gMDsKIAlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKLQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgJmFtcDtzaG1lbV9mYWxsb2MpOwogCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiAKIAkvKgpAQCAtMzc0Nyw3ICYjNDM7Mzc0Nyw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsCiAJCWlfc2l6ZV93cml0ZShpbm9kZSwgb2Zmc2V0ICYjNDM7IGxlbik7CiB1bmRvbmU6CiAJc3Bpbl9sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7Ci0JaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgTlVMTCk7CiAJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKIG91dDoKIAlpZiAoIWVycm9yKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODAzCgkJCQkJCQlvdXRwdXQ6IDc1CgkJCQkJCQl0aG91Z2h0czogNzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYWNjZXNzZXMgdG8gYGlub2RlLSZndDtpX3ByaXZhdGVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O0RhdGEgcmFjZSBmaXhlcyAqYXJlKiBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIG1heWJlIHdlIGZ1eno/JiMzNDsgQnV0IHRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcHJvbXB0LiBJdCYjMzk7cyByZWFsbHkga2V5IGhlcmU6ICYjMzQ7Q2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuCgpBdCBmaXJzdCBnbGFuY2UsIGl0IGZlZWxzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGNvbmN1cnJlbmN5IGlzIGludm9sdmVkLiBCdXQgdGhlbiBJIHNhdyBgUkVBRF9PTkNFYCBhbmQgYFdSSVRFX09OQ0VgLiBUaG9zZSBhcmVuJiMzOTt0IGFib3V0IGNoYW5naW5nIHRoZSAqbG9naWMqIG9mIHRoZSBjb2RlOyB0aGV5JiMzOTtyZSBjb21waWxlciBiYXJyaWVycy4gVGhleSYjMzk7cmUgZXhwbGljaXRseSAqcHJldmVudGluZyogdGhlIGNvbXBpbGVyIGZyb20gb3B0aW1pemluZyBpbiB3YXlzIHRoYXQgY291bGQgaW50cm9kdWNlIGRhdGEgcmFjZXMuIFRoZXkgZG9uJiMzOTt0IGNoYW5nZSAqd2hhdCogdGhlIGNvZGUgZG9lcywganVzdCAqaG93KiB0aGUgY29tcGlsZXIgdGhpbmtzIGFib3V0IGl0IHdoZW4gZ2VuZXJhdGluZyB0aGUgaW5zdHJ1Y3Rpb25zLgoKU28sIHdoaWxlIHRoZXNlIGNoYW5nZXMgYXJlIGFic29sdXRlbHkgY3JpdGljYWwgZm9yIGNvcnJlY3RuZXNzLCBhbmQgd2hpbGUgc2htZW0gaXMgYSBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCwgZnV6emluZyAqdGhpcyBzcGVjaWZpYyBwYXRjaCogd291bGRuJiMzOTt0IHVuY292ZXIgbmV3IGxvZ2ljIGJ1Z3MuIEl0JiMzOTtzIGFib3V0IGVuc3VyaW5nIHRoZSBjdXJyZW50IGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBpbiBhIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQsIGJ1dCB0aGUgbG9naWMgaXRzZWxmIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgZnV6emluZyB3b3VsZCBleGVyY2lzZSB0aGUgZXhpc3RpbmcgY29kZSBwYXRocywgYnV0IG5vdCBpbiBhIHdheSB0aGF0IHdvdWxkIHRhcmdldCB0aGUgaW50cm9kdWNlZCBjb25jdXJyZW5jeS1zYWZlIGFjY2Vzc2VzLgoKSSB0b29rIGEgZmluYWwgbG9vayBhdCB0aGUgY29kZTogaXQmIzM5O3MgcHVyZSBtYWNybyBhZGRpdGlvbnMsIGFzIEkgc3VzcGVjdGVkLgoKYGBgYwotCQlpZiAoaW5vZGUtJmd0O2lfcHJpdmF0ZSkgewomIzQzOwkJaWYgKFJFQURfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkgewpgYGAKYGBgYwotCQkJc2htZW1fZmFsbG9jID0gaW5vZGUtJmd0O2lfcHJpdmF0ZTsKJiM0MzsJCQlzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSk7CmBgYApgYGBjCi0Jc2htZW1fZmFsbG9jID0gaW5vZGUtJmd0O2lfcHJpdmF0ZTsKJiM0MzsJc2htZW1fZmFsbG9jID0gUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpOwpgYGAKYGBgYwotCWlmICh1bmxpa2VseShpbm9kZS0mZ3Q7aV9wcml2YXRlKSkgewomIzQzOwlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUpKSkgewpgYGAKYGBgYwotCQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gJmFtcDtzaG1lbV9mYWxsb2M7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsICZhbXA7c2htZW1fZmFsbG9jKTsKYGBgCmBgYGMKLQkJaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CQlXUklURV9PTkNFKGlub2RlLSZndDtpX3ByaXZhdGUsIE5VTEwpOwpgYGAKYGBgYwotCWlub2RlLSZndDtpX3ByaXZhdGUgPSAmYW1wO3NobWVtX2ZhbGxvYzsKJiM0MzsJV1JJVEVfT05DRShpbm9kZS0mZ3Q7aV9wcml2YXRlLCAmYW1wO3NobWVtX2ZhbGxvYyk7CmBgYApgYGBjCi0JaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTEw7CiYjNDM7CVdSSVRFX09OQ0UoaW5vZGUtJmd0O2lfcHJpdmF0ZSwgTlVMTCk7CmBgYAoKVGh1cywgKnB1cmVseSogYWRkaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGEgS0NTQU4gZGF0YSByYWNlIGZpeC4gTm8gbmV3IGxvZ2ljIG9yIGV4ZWN1dGlvbiBwYXRoLiBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVx1MDAzZWlfcHJpdmF0ZS4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA0OjI5OjMxLjUyNTM0MzMwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTczNzgwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTozMS41MjUzNTAwOTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjgzMjMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDQ6Mjk6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmNcXG5pbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0XFxuLS0tIGEvbW0vc2htZW0uY1xcbisrKyBiL21tL3NobWVtLmNcXG5AQCAtMTY1NywxMCArMTY1NywxMCBAQCBpbnQgc2htZW1fd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcsXFxuIFxcdCAqIHJlYWN0aXZhdGUgdGhlIGZvbGlvLCBhbmQgbGV0IHNobWVtX2ZhbGxvY2F0ZSgpIHF1aXQgd2hlbiB0b28gbWFueS5cXG4gXFx0ICovXFxuIFxcdGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHtcXG4tXFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUpIHtcXG4rXFx0XFx0aWYgKFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKSkge1xcbiBcXHRcXHRcXHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XFxuIFxcdFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdFxcdFxcdHNobWVtX2ZhbGxvYyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuK1xcdFxcdFxcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKTtcXG4gXFx0XFx0XFx0aWYgKHNobWVtX2ZhbGxvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgIXNobWVtX2ZhbGxvYy1cXHUwMDNld2FpdHEgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGluZGV4IFxcdTAwM2U9IHNobWVtX2ZhbGxvYy1cXHUwMDNlc3RhcnQgXFx1MDAyNlxcdTAwMjZcXG5AQCAtMjY0Nyw3ICsyNjQ3LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qgc2htZW1fZmFsbG9jX3dhaXQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuIFxcdHZtX2ZhdWx0X3QgcmV0ID0gMDtcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdHNobWVtX2ZhbGxvYyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuK1xcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKTtcXG4gXFx0aWYgKHNobWVtX2ZhbGxvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgc2htZW1fZmFsbG9jLVxcdTAwM2V3YWl0cSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgdm1mLVxcdTAwM2VwZ29mZiBcXHUwMDNlPSBzaG1lbV9mYWxsb2MtXFx1MDAzZXN0YXJ0IFxcdTAwMjZcXHUwMDI2XFxuQEAgLTI2OTMsNyArMjY5Myw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHQgKiBUcmluaXR5IGZpbmRzIHRoYXQgcHJvYmluZyBhIGhvbGUgd2hpY2ggdG1wZnMgaXMgcHVuY2hpbmcgY2FuXFxuIFxcdCAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseShpbm9kZS1cXHUwMDNlaV9wcml2YXRlKSkge1xcbitcXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUpKSkge1xcbiBcXHRcXHRyZXQgPSBzaG1lbV9mYWxsb2Nfd2FpdCh2bWYsIGlub2RlKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzYzMCw3ICszNjMwLDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0c2htZW1fZmFsbG9jLnN0YXJ0ID0gKHU2NCl1bm1hcF9zdGFydCBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXHRcXHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgKyAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi1cXHRcXHRpbm9kZS1cXHUwMDNlaV9wcml2YXRlID0gXFx1MDAyNnNobWVtX2ZhbGxvYztcXG4rXFx0XFx0V1JJVEVfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlLCBcXHUwMDI2c2htZW1fZmFsbG9jKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXG4gXFx0XFx0aWYgKCh1NjQpdW5tYXBfZW5kIFxcdTAwM2UgKHU2NCl1bm1hcF9zdGFydClcXG5AQCAtMzY0MCw3ICszNjQwLDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0LyogTm8gbmVlZCB0byB1bm1hcCBhZ2FpbjogaG9sZS1wdW5jaGluZyBsZWF2ZXMgQ09XZWQgcGFnZXMgKi9cXG4gXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdFxcdGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgPSBOVUxMO1xcbitcXHRcXHRXUklURV9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xcbiBcXHRcXHR3YWtlX3VwX2FsbChcXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxKTtcXG4gXFx0XFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZzaG1lbV9mYWxsb2Nfd2FpdHEuaGVhZCkpO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuQEAgLTM2NzIsNyArMzY3Miw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdHNobWVtX2ZhbGxvYy5ucl9mYWxsb2NlZCA9IDA7XFxuIFxcdHNobWVtX2ZhbGxvYy5ucl91bnN3YXBwZWQgPSAwO1xcbiBcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi1cXHRpbm9kZS1cXHUwMDNlaV9wcml2YXRlID0gXFx1MDAyNnNobWVtX2ZhbGxvYztcXG4rXFx0V1JJVEVfT05DRShpbm9kZS1cXHUwMDNlaV9wcml2YXRlLCBcXHUwMDI2c2htZW1fZmFsbG9jKTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXG4gXFx0LypcXG5AQCAtMzc0Nyw3ICszNzQ3LDcgQEAgc3RhdGljIGxvbmcgc2htZW1fZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0XFx0aV9zaXplX3dyaXRlKGlub2RlLCBvZmZzZXQgKyBsZW4pO1xcbiB1bmRvbmU6XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuLVxcdGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgPSBOVUxMO1xcbitcXHRXUklURV9PTkNFKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuIG91dDpcXG4gXFx0aWYgKCFlcnJvcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDQ6Mjk6MzIuMTg4NzU4NDI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTEwMzU4NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGFuZCBmaXggZGF0YSByYWNlcyBvbiBpbm9kZS1cXHUwMDNlaV9wcml2YXRlLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZmNjk0Y2U3YjQxZjlmZDRjN2MzZDlmMGI3MzE2MDIxYzkwM2QyZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwNDoyOToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NobWVtLmMgYi9tbS9zaG1lbS5jXG5pbmRleCBiNTFmODNjOTcwYmIzNy4uMWMzOWU5ZGZjNTI0MTYgMTAwNjQ0XG4tLS0gYS9tbS9zaG1lbS5jXG4rKysgYi9tbS9zaG1lbS5jXG5AQCAtMTY1NywxMCArMTY1NywxMCBAQCBpbnQgc2htZW1fd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcsXG4gXHQgKiByZWFjdGl2YXRlIHRoZSBmb2xpbywgYW5kIGxldCBzaG1lbV9mYWxsb2NhdGUoKSBxdWl0IHdoZW4gdG9vIG1hbnkuXG4gXHQgKi9cbiBcdGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHtcbi1cdFx0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbiBcdFx0XHRzdHJ1Y3Qgc2htZW1fZmFsbG9jICpzaG1lbV9mYWxsb2M7XG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuK1x0XHRcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuIFx0XHRcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgICFzaG1lbV9mYWxsb2MtXHUwMDNld2FpdHEgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGluZGV4IFx1MDAzZT0gc2htZW1fZmFsbG9jLVx1MDAzZXN0YXJ0IFx1MDAyNlx1MDAyNlxuQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IHNobWVtX2ZhbGxvY193YWl0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0dm1fZmF1bHRfdCByZXQgPSAwO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRzaG1lbV9mYWxsb2MgPSBpbm9kZS1cdTAwM2VpX3ByaXZhdGU7XG4rXHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiBcdGlmIChzaG1lbV9mYWxsb2MgXHUwMDI2XHUwMDI2XG4gXHQgICAgc2htZW1fZmFsbG9jLVx1MDAzZXdhaXRxIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZtZi1cdTAwM2VwZ29mZiBcdTAwM2U9IHNobWVtX2ZhbGxvYy1cdTAwM2VzdGFydCBcdTAwMjZcdTAwMjZcbkBAIC0yNjkzLDcgKzI2OTMsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBzaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdCAqIFRyaW5pdHkgZmluZHMgdGhhdCBwcm9iaW5nIGEgaG9sZSB3aGljaCB0bXBmcyBpcyBwdW5jaGluZyBjYW5cbiBcdCAqIHByZXZlbnQgdGhlIGhvbGUtcHVuY2ggZnJvbSBldmVyIGNvbXBsZXRpbmc6IG5vdGVkIGluIGlfcHJpdmF0ZS5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbitcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkpIHtcbiBcdFx0cmV0ID0gc2htZW1fZmFsbG9jX3dhaXQodm1mLCBpbm9kZSk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbkBAIC0zNjMwLDcgKzM2MzAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHRzaG1lbV9mYWxsb2Muc3RhcnQgPSAodTY0KXVubWFwX3N0YXJ0IFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFx0XHRzaG1lbV9mYWxsb2MubmV4dCA9ICh1bm1hcF9lbmQgKyAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IFx1MDAyNnNobWVtX2ZhbGxvYztcbitcdFx0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIFx1MDAyNnNobWVtX2ZhbGxvYyk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHRcdGlmICgodTY0KXVubWFwX2VuZCBcdTAwM2UgKHU2NCl1bm1hcF9zdGFydClcbkBAIC0zNjQwLDcgKzM2NDAsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0XHQvKiBObyBuZWVkIHRvIHVubWFwIGFnYWluOiBob2xlLXB1bmNoaW5nIGxlYXZlcyBDT1dlZCBwYWdlcyAqL1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbitcdFx0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIE5VTEwpO1xuIFx0XHR3YWtlX3VwX2FsbChcdTAwMjZzaG1lbV9mYWxsb2Nfd2FpdHEpO1xuIFx0XHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2c2htZW1fZmFsbG9jX3dhaXRxLmhlYWQpKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbkBAIC0zNjcyLDcgKzM2NzIsNyBAQCBzdGF0aWMgbG9uZyBzaG1lbV9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0c2htZW1fZmFsbG9jLm5yX2ZhbGxvY2VkID0gMDtcbiBcdHNobWVtX2ZhbGxvYy5ucl91bnN3YXBwZWQgPSAwO1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tXHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgXHUwMDI2c2htZW1fZmFsbG9jKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4gXG4gXHQvKlxuQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHN0YXRpYyBsb25nIHNobWVtX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRcdGlfc2l6ZV93cml0ZShpbm9kZSwgb2Zmc2V0ICsgbGVuKTtcbiB1bmRvbmU6XG4gXHRzcGluX2xvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuIG91dDpcbiBcdGlmICghZXJyb3IpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTozMi4xODg3NTk4OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTEwMzM3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9zaG1lbS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGFjY2Vzc2VzIHRvIGBpbm9kZS1cdTAwM2VpX3ByaXZhdGVgLiBJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCBcIkRhdGEgcmFjZSBmaXhlcyAqYXJlKiBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIG1heWJlIHdlIGZ1eno/XCIgQnV0IHRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcHJvbXB0LiBJdCdzIHJlYWxseSBrZXkgaGVyZTogXCJDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIi5cblxuQXQgZmlyc3QgZ2xhbmNlLCBpdCBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBjb25jdXJyZW5jeSBpcyBpbnZvbHZlZC4gQnV0IHRoZW4gSSBzYXcgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYC4gVGhvc2UgYXJlbid0IGFib3V0IGNoYW5naW5nIHRoZSAqbG9naWMqIG9mIHRoZSBjb2RlOyB0aGV5J3JlIGNvbXBpbGVyIGJhcnJpZXJzLiBUaGV5J3JlIGV4cGxpY2l0bHkgKnByZXZlbnRpbmcqIHRoZSBjb21waWxlciBmcm9tIG9wdGltaXppbmcgaW4gd2F5cyB0aGF0IGNvdWxkIGludHJvZHVjZSBkYXRhIHJhY2VzLiBUaGV5IGRvbid0IGNoYW5nZSAqd2hhdCogdGhlIGNvZGUgZG9lcywganVzdCAqaG93KiB0aGUgY29tcGlsZXIgdGhpbmtzIGFib3V0IGl0IHdoZW4gZ2VuZXJhdGluZyB0aGUgaW5zdHJ1Y3Rpb25zLlxuXG5Tbywgd2hpbGUgdGhlc2UgY2hhbmdlcyBhcmUgYWJzb2x1dGVseSBjcml0aWNhbCBmb3IgY29ycmVjdG5lc3MsIGFuZCB3aGlsZSBzaG1lbSBpcyBhIHBhcnQgb2YgdGhlIGNvcmUga2VybmVsLCBmdXp6aW5nICp0aGlzIHNwZWNpZmljIHBhdGNoKiB3b3VsZG4ndCB1bmNvdmVyIG5ldyBsb2dpYyBidWdzLiBJdCdzIGFib3V0IGVuc3VyaW5nIHRoZSBjdXJyZW50IGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBpbiBhIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQsIGJ1dCB0aGUgbG9naWMgaXRzZWxmIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgZnV6emluZyB3b3VsZCBleGVyY2lzZSB0aGUgZXhpc3RpbmcgY29kZSBwYXRocywgYnV0IG5vdCBpbiBhIHdheSB0aGF0IHdvdWxkIHRhcmdldCB0aGUgaW50cm9kdWNlZCBjb25jdXJyZW5jeS1zYWZlIGFjY2Vzc2VzLlxuXG5JIHRvb2sgYSBmaW5hbCBsb29rIGF0IHRoZSBjb2RlOiBpdCdzIHB1cmUgbWFjcm8gYWRkaXRpb25zLCBhcyBJIHN1c3BlY3RlZC5cblxuYGBgY1xuLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSB7XG4rXHRcdGlmIChSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkge1xuYGBgXG5gYGBjXG4tXHRcdFx0c2htZW1fZmFsbG9jID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuK1x0XHRcdHNobWVtX2ZhbGxvYyA9IFJFQURfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuYGBgXG5gYGBjXG4tXHRzaG1lbV9mYWxsb2MgPSBpbm9kZS1cdTAwM2VpX3ByaXZhdGU7XG4rXHRzaG1lbV9mYWxsb2MgPSBSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbmBgYFxuYGBgY1xuLVx0aWYgKHVubGlrZWx5KGlub2RlLVx1MDAzZWlfcHJpdmF0ZSkpIHtcbitcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlKSkpIHtcbmBgYFxuYGBgY1xuLVx0XHRpbm9kZS1cdTAwM2VpX3ByaXZhdGUgPSBcdTAwMjZzaG1lbV9mYWxsb2M7XG4rXHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBcdTAwMjZzaG1lbV9mYWxsb2MpO1xuYGBgXG5gYGBjXG4tXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRcdFdSSVRFX09OQ0UoaW5vZGUtXHUwMDNlaV9wcml2YXRlLCBOVUxMKTtcbmBgYFxuYGBgY1xuLVx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gXHUwMDI2c2htZW1fZmFsbG9jO1xuK1x0V1JJVEVfT05DRShpbm9kZS1cdTAwM2VpX3ByaXZhdGUsIFx1MDAyNnNobWVtX2ZhbGxvYyk7XG5gYGBcbmBgYGNcbi1cdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4rXHRXUklURV9PTkNFKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSwgTlVMTCk7XG5gYGBcblxuVGh1cywgKnB1cmVseSogYWRkaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGEgS0NTQU4gZGF0YSByYWNlIGZpeC4gTm8gbmV3IGxvZ2ljIG9yIGV4ZWN1dGlvbiBwYXRoLiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDMsIk91dHB1dFRva2VucyI6NzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwNDoyOTo0MS42OTkwOTkzNTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVxcdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgYW5kIGZpeCBkYXRhIHJhY2VzIG9uIGlub2RlLVxcdTAwM2VpX3ByaXZhdGUuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownmfmg[1] Phase: Running StartedAt: 2026-06-29 04:31:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmfmg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-29 04:31:16 +0000 UTC FinishedAt: 2026-06-29 04:31:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}