Name: series-workflowh7hj8 Phase: Succeeded StartedAt: 2026-08-02 07:05:13 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[0] Phase: Succeeded StartedAt: 2026-08-02 07:05:13 +0000 UTC FinishedAt: 2026-08-02 07:46:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 07:05:13 +0000 UTC FinishedAt: 2026-08-02 07:46:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "d0be43f25d0dd778b0185d67b8b9f4ab70e68154", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "d0be43f25d0dd778b0185d67b8b9f4ab70e68154", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "daf26bd6-b2dd-436b-9a40-349e3984c784" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ufs_empty_dir", "ufs_rmdir", "ufs_rename" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZW1wdHlfZGlyJiMzNDssCiAgICAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICAgJiMzNDt1ZnNfcmVuYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNzo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmYmYxNDlmNmViYTMxNmQ5ZTYxMjgxNDI1YzJlZWU3YWUyZmI4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA3OjQ1OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9kaXIuYyBiL2ZzL3Vmcy9kaXIuY1xuaW5kZXggZTYyZmU1NjY3NjcxMC4uY2U0M2NmMjBiMDdjOSAxMDA2NDRcbi0tLSBhL2ZzL3Vmcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2Rpci5jXG5AQCAtNTkwLDcgJiM0Mzs1OTAsNyBAQCBpbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbiBcbiBcdFx0a2FkZHIgPSB1ZnNfZ2V0X2ZvbGlvKGlub2RlLCBpLCBcdTAwMjZmb2xpbyk7XG4gXHRcdGlmIChJU19FUlIoa2FkZHIpKVxuLVx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiBcbiBcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiBcdFx0a2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVRlNfRlMmIzM0OywKICAgICYjMzQ7VUZTX0ZTX1dSSVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWZzX2VtcHR5X2RpciYjMzQ7LAogICAgJiMzNDt1ZnNfcm1kaXImIzM0OywKICAgICYjMzQ7dWZzX3JlbmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGB1ZnNfZW1wdHlfZGlyYCB3aGVyZSBhIGZhaWx1cmUgdG8gZ2V0IGEgZm9saW8gd291bGQgcHJldmlvdXNseSBiZSBpZ25vcmVkICh2aWEgYGNvbnRpbnVlYCksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUgbG9vcHMgb3IgaW5jb3JyZWN0IGVtcHR5IGRpcmVjdG9yeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0mIzM5O3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZmJmMTQ5ZjZlYmEzMTZkOWU2MTI4MTQyNWMyZWVlN2FlMmZiOGEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNzo0NTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL3Vmcy9kaXIuYyBiL2ZzL3Vmcy9kaXIuYwppbmRleCBlNjJmZTU2Njc2NzEwLi5jZTQzY2YyMGIwN2M5IDEwMDY0NAotLS0gYS9mcy91ZnMvZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2Rpci5jCkBAIC01OTAsNyAmIzQzOzU5MCw3IEBAIGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKQogCiAJCWthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgJmFtcDtmb2xpbyk7CiAJCWlmIChJU19FUlIoa2FkZHIpKQotCQkJY29udGludWU7CiYjNDM7CQkJcmV0dXJuIDA7CiAKIAkJZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjsKIAkJa2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNzo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcGxheWluZyB3aXRoIGBmcy91ZnMvZGlyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB1ZnNfZW1wdHlfZGlyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHNpbmNlIHRoZSBjb2RlIGlzIGFsdGVyaW5nIGNvbnRyb2wgZmxvdzsgaXQmIzM5O3Mgc3dhcHBpbmcgYSBgY29udGludWU7YCB3aXRoIGEgYHJldHVybiAwO2AgYWZ0ZXIgYSBjYWxsIHRvIGB1ZnNfZ2V0X2ZvbGlvYCBhbmQgZXJyb3IuIEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXMqIHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0uIE15IGd1ZXNzIGlzLCBnaXZlbiB0aGUgbmFtZSwgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSBpbnZvbHZlZCBpbiBjaGVja2luZyBpZiBhIGRpcmVjdG9yeSBpcyBlbXB0eS4gTGlrZWx5IGR1cmluZyBhbiBgcm1kaXJgIG9wZXJhdGlvbiwgcGVyaGFwcz8gTWFrZXMgc2Vuc2UuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3IgYHVmc19lbXB0eV9kaXJgIHdpdGhpbiB0aGUgYGZzL3Vmcy9gIGRpcmVjdG9yeSB0byBnZXQgc29tZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vmc19lbXB0eV9kaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9kaXIuYz01MzM9aW50IHVmc19tYWtlX2VtcHR5KHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgaW5vZGUgKmRpcilcbi0tXG5mcy91ZnMvZGlyLmMtNTgwLSAqL1xuZnMvdWZzL2Rpci5jOjU4MTppbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbmZzL3Vmcy9kaXIuYy01ODIte1xuLS1cbmZzL3Vmcy9uYW1laS5jPTIyNz1zdGF0aWMgaW50IHVmc19ybWRpciAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvdWZzL25hbWVpLmMtMjMxLVxuZnMvdWZzL25hbWVpLmM6MjMyOlx0aWYgKHVmc19lbXB0eV9kaXIgKGlub2RlKSkge1xuZnMvdWZzL25hbWVpLmMtMjMzLVx0XHRlcnIgPSB1ZnNfdW5saW5rKGRpciwgZGVudHJ5KTtcbi0tXG5mcy91ZnMvbmFtZWkuYz0yNDM9c3RhdGljIGludCB1ZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4tLVxuZnMvdWZzL25hbWVpLmMtMjczLVx0XHRlcnIgPSAtRU5PVEVNUFRZO1xuZnMvdWZzL25hbWVpLmM6Mjc0Olx0XHRpZiAoZGlyX2RlIFx1MDAyNlx1MDAyNiAhdWZzX2VtcHR5X2RpcihuZXdfaW5vZGUpKVxuZnMvdWZzL25hbWVpLmMtMjc1LVx0XHRcdGdvdG8gb3V0X2Rpcjtcbi0tXG5mcy91ZnMvdWZzLmg9MTAzPWludCB1ZnNfZGVsZXRlX2VudHJ5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgZm9saW8gKik7XG5mcy91ZnMvdWZzLmg6MTA0OmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqKTtcbmZzL3Vmcy91ZnMuaC0xMDUtc3RydWN0IHVmc19kaXJfZW50cnkgKnVmc19kb3Rkb3Qoc3RydWN0IGlub2RlICosIHN0cnVjdCBmb2xpbyAqKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlVGUyBEaXJlY3RvcnkgRW1wdGluZXNzIENoZWNrOiBBIENyaXRpY2FsIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIGB1ZnNfZW1wdHlfZGlyYCBpcyBub3cgYmVpbmcgaW52b2tlZCBmcm9tIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIHNoaWZ0IHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEFueXRpbWUgeW91IHN0YXJ0IHNlZWluZyBjaGFuZ2VzIGF0IHRoYXQgbGV2ZWwsIHlvdSBuZWVkIHRvIHBheSBhdHRlbnRpb24uIFRoZSBjb3JlIGRpcmVjdG9yeSBvcGVyYXRpb25zIGFyZSB0aGUgbW9zdCBjcml0aWNhbCwgc28gYW55IHJlZmFjdG9yaW5nIHRoZXJlIGRlbWFuZHMgYSBjbG9zZSBsb29rIGF0IHBvdGVudGlhbCBpbXBhY3RzLiBHaXZlbiB0aGlzIGNoYW5nZSwgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyByZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVGUy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgYWxpZ25zIHdpdGggdGhpcyBuZXcgY2FsbCBjaGFpbiBhbmQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyBvciBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhvc2UgdHdvIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCByZWxldmFudCBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcbmZzL3Vmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuLS1cbmZzL3Vmcy9LY29uZmlnLTMxLVxuZnMvdWZzL0tjb25maWc6MzI6Y29uZmlnIFVGU19GU19XUklURVxuZnMvdWZzL0tjb25maWctMzMtXHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIEkgc2VlIHRoYXQgYHVmc19lbXB0eV9kaXJgIGlzIGludm9sdmVkIGluIGJvdGggYHJtZGlyYCBhbmQgYHJlbmFtZWAgb3BlcmF0aW9ucy4gQW5kIHRob3NlIGFyZSBkZWZpbml0ZWx5IHdyaXRlIG9wZXJhdGlvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgYFVGU19GU19XUklURWAgKnNob3VsZCogYmUgcmVxdWlyZWQuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYFVGU19GU19XUklURWAgZGVwZW5kZW50IG9uIGBVRlNfRlNgPyBZZXMsIHRoYXQmIzM5O3Mgd2hhdCBteSBleHBlcmllbmNlIHRlbGxzIG1lLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQmIzM5O3MgYmVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUgc291cmNlIHRvIGNvbmZpcm0gdGhpcyBsb2dpYyBhbmQgZW5zdXJlIEkgaGF2ZSB0aGUgY29ycmVjdCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGggZmlsZXN5c3RlbSBjb25maWd1cmF0aW9ucywgc28gbGV0IG1lIGp1c3QgY2hlY2sgdGhhdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvdWZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgVUZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBCTE9DS1xuICAgNTpcdFx0c2VsZWN0IEJVRkZFUl9IRUFEXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIEJTRCBhbmQgZGVyaXZhdGUgdmVyc2lvbnMgb2YgVW5peCAoc3VjaCBhcyBTdW5PUywgRnJlZUJTRCwgTmV0QlNELFxuICAgODpcdFx0ICBPcGVuQlNEIGFuZCBOZVhUc3RlcCkgdXNlIGEgZmlsZSBzeXN0ZW0gY2FsbGVkIFVGUy4gU29tZSBTeXN0ZW0gVlxuICAgOTpcdFx0ICBVbml4ZXMgY2FuIGNyZWF0ZSBhbmQgbW91bnQgaGFyZCBkaXNrIHBhcnRpdGlvbnMgYW5kIGRpc2tldHRlcyB1c2luZ1xuICAxMDpcdFx0ICB0aGlzIGZpbGUgc3lzdGVtIGFzIHdlbGwuIFNheWluZyBZIGhlcmUgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBmcm9tXG4gIDExOlx0XHQgIHRoZXNlIHBhcnRpdGlvbnM7IGlmIHlvdSBhbHNvIHdhbnQgdG8gd3JpdGUgdG8gdGhlbSwgc2F5IFkgdG8gdGhlXG4gIDEyOlx0XHQgIGV4cGVyaW1lbnRhbCBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydFwmIzM0OywgYmVsb3cuIFBsZWFzZSByZWFkIHRoZVxuICAxMzpcdFx0ICBmaWxlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS91ZnMucnN0XHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdCAgICAgICAgICBUaGUgcmVjZW50bHkgcmVsZWFzZWQgVUZTMiB2YXJpYW50ICh1c2VkIGluIEZyZWVCU0QgNS54KSBpc1xuICAxNjpcdCAgICAgICAgICBSRUFELU9OTFkgc3VwcG9ydGVkLlxuICAxNzpcdFxuICAxODpcdFx0ICBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IG5vdCBuZWVkZWQgZm9yIGZsb3BwaWVzLCBzaW5jZSBhXG4gIDE5Olx0XHQgIGdvb2QgcG9ydGFibGUgd2F5IHRvIHRyYW5zcG9ydCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYmV0d2VlbiB1bml4ZXNcbiAgMjA6XHRcdCAgKGFuZCBldmVuIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zKSBpcyBnaXZlbiBieSB0aGUgdGFyIHByb2dyYW0gKFwmIzM0O21hblxuICAyMTpcdFx0ICB0YXJcJiMzNDsgb3IgcHJlZmVyYWJseSBcJiMzNDtpbmZvIHRhclwmIzM0OykuXG4gIDIyOlx0XG4gIDIzOlx0XHQgIFdoZW4gYWNjZXNzaW5nIE5lWFRzdGVwIGZpbGVzLCB5b3UgbWF5IG5lZWQgdG8gY29udmVydCB0aGVtIGZyb20gdGhlXG4gIDI0Olx0XHQgIE5lWFQgY2hhcmFjdGVyIHNldCB0byB0aGUgTGF0aW4xIGNoYXJhY3RlciBzZXQ7IHVzZSB0aGUgcHJvZ3JhbVxuICAyNTpcdFx0ICByZWNvZGUgKFwmIzM0O2luZm8gcmVjb2RlXCYjMzQ7KSBmb3IgdGhpcyBwdXJwb3NlLlxuICAyNjpcdFxuICAyNzpcdFx0ICBUbyBjb21waWxlIHRoZSBVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1ZnMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBoYXZlbiYjMzk7dCBoZWFyZCBhYm91dCBhbGwgb2YgdGhpcyBiZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gc2F5IE4uXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFVGU19GU19XUklURVxuICAzMzpcdFx0Ym9vbCBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVwmIzM0O1xuICAzNDpcdFx0ZGVwZW5kcyBvbiBVRlNfRlNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB0cnkgd3JpdGluZyB0byBVRlMgcGFydGl0aW9ucy4gVGhpcyBpc1xuICAzNzpcdFx0ICBleHBlcmltZW50YWwsIHNvIHlvdSBzaG91bGQgYmFjayB1cCB5b3VyIFVGUyBwYXJ0aXRpb25zIGJlZm9yZWhhbmQuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFVGU19ERUJVR1xuICA0MDpcdFx0Ym9vbCBcJiMzNDtVRlMgZGVidWdnaW5nXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIFVGU19GU1xuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgVUZTIGZpbGVzeXN0ZW0sIHNheVxuICA0NDpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIF9tYW55XyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0byBiZVxuICA0NTpcdFx0ICB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uICZhbXA7IENvcmUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gVGhleSBzZWVtIHRvIGJlIHRoZSBrZXkgc2V0dGluZ3MgZm9yIHRoaXMgcGFydGljdWxhciBmaWxlc3lzdGVtLiBUaGUgcGF0Y2gsIHNwZWNpZmljYWxseSwgaXMgdG91Y2hpbmcgdGhlIGB1ZnNfZW1wdHlfZGlyYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBteSBtYWluIHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBgVUZTYCBmaWxlc3lzdGVtIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkkmIzM5O3ZlIGdvdCBhIG1lbnRhbCBjaGVja2xpc3Qgbm93LiBMZXQmIzM5O3MgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBjZW50cmFsIHBpZWNlcyByZWxhdGVkIHRvIGRpcmVjdG9yeSBvcGVyYXRpb25zLCBhbmQgdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgZmlyc3Qgb25lLiBOb3csIGlzIGB1ZnNfZW1wdHlfZGlyYCBzdGF0aWM/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBJdCYjMzk7cyBpbiBgZnMvdWZzL2Rpci5jYCwgd2hpY2ggbWFrZXMgaXQgKm5vdCogc3RhdGljLCBhbmQgbG9va3MgbGlrZSBpdCBpcyBleHBvcnRlZCBmb3IgdXNlIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc3ViZGlyZWN0b3J5LiBJIHNob3VsZCBjaGVjayB0aGF0IGZpbGUsIGBmcy91ZnMvZGlyLmNgLCB0byBiZSBzdXJlIG9mIHRoZSBzY29wZSBhbmQgdXNlIG9mIHRoYXQgY29yZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHVmc19lbXB0eV9kaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL2Rpci5jPTUzMz1pbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyKVxuLS1cbmZzL3Vmcy9kaXIuYy01ODAtICovXG5mcy91ZnMvZGlyLmM6NTgxOmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxuZnMvdWZzL2Rpci5jLTU4Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBVRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQuIEl0JiMzOTtzIG5vdCBzdGF0aWM7IHRoZSBuYXR1cmUgb2YgdGhlIG9wZXJhdGlvbnMgd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGlzIGR5bmFtaWMuIEJ1dCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCwgdGhleSYjMzk7cmUgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgZnMvdWZzL25hbWVpLmNgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQmIzM5O3MgYSBrZXkgZGV0YWlsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbnRlbmRlZCB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEl0IGltcGxpZXMgYSBjZXJ0YWluIGxldmVsIG9mIGludGVybmFsLW9ubHkgYWNjZXNzIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBUaGlzIHN0YXRpYyBuYXR1cmUgYWZmZWN0cyBob3cgYW5kIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIG92ZXJhbGwgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9uYW1laS5jPTIwNz1zdGF0aWMgaW50IHVmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy91ZnMvbmFtZWkuYy0yMjYtXG5mcy91ZnMvbmFtZWkuYzoyMjc6c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuZnMvdWZzL25hbWVpLmMtMjI4LXtcbi0tXG5mcy91ZnMvbmFtZWkuYz0zMTk9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Vmcy9uYW1laS5jLTMyNS1cdC5ta2Rpclx0XHQ9IHVmc19ta2RpcixcbmZzL3Vmcy9uYW1laS5jOjMyNjpcdC5ybWRpclx0XHQ9IHVmc19ybWRpcixcbmZzL3Vmcy9uYW1laS5jLTMyNy1cdC5ta25vZFx0XHQ9IHVmc19ta25vZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEluaXRpYWxseSwgSSB3YXMgbGVhbmluZyBhd2F5IGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCBiZWNhdXNlIHRoZXkmIzM5O3JlIGRlY2xhcmVkIHN0YXRpYywgYW5kIG15IHVuZGVyc3RhbmRpbmcsIGJhc2VkIG9uIHRoZSBwcm9tcHQsIGlzIHRoYXQgc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gaW5saW5lZCBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IHdhaXQsIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBUaGVzZSBmdW5jdGlvbnMsIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAsIGFyZSBhY3R1YWxseSBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVmc19kaXJfaW5vZGVfb3BlcmF0aW9uc2AuIFRoYXQgbWVhbnMgdGhleSAqYXJlKiBleHBvc2VkIGFzIEFQSSBlbnRyeXBvaW50cyB0byB0aGUgVkZTLCBhbmQgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQhIE9rYXksIGV4Y2VsbGVudC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgZm9jdXMgc3ltYm9scy4gVGhleSYjMzk7cmUgY2xlYXJseSBpbXBvcnRhbnQgZW50cnlwb2ludHMgZm9yIGRpcmVjdG9yeSBtYW5pcHVsYXRpb24uIEFuZCBgdWZzX2VtcHR5X2RpcmAgaXMgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBnb29kIHRvby4KCk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBaCB5ZXMsIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gR29vZCB0byBrZWVwIHRob3NlIGluIG1pbmQuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgYnVnIHdpdGhpbiBgdWZzX2VtcHR5X2RpcmAuIEl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGhhbmRsaW5nIG9mIGVycm9ycyBmcm9tIGB1ZnNfZ2V0X2ZvbGlvYCwgd2hpY2ggcG90ZW50aWFsbHkgcmVzdWx0cyBpbiBhbiBpbmZpbml0ZSBsb29wLiBTbywgdGhlIGZvY3VzIGhlcmUgc2hvdWxkIGRlZmluaXRlbHkgYmUgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zLiBgcm1kaXJgIGFuZCBgcmVuYW1lYCBmZWVsIG1vc3QgcmVsZXZhbnQuIFRoZXkmIzM5O3JlIGFsbCBwYXJ0IG9mIHRoZSBzYW1lIG9wZXJhdGlvbmFsIGRvbWFpbi4KCk9rYXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHVmc19lbXB0eV9kaXJgIGFnYWluLCBzcGVjaWZpY2FsbHkgaW4gYGZzL3Vmcy9kaXIuY2AuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy91ZnMvZGlyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdCAqL1xuIDU4MTpcdGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxuIDU4MjpcdHtcbiA1ODM6XHRcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cdTAwM2VpX3NiO1xuIDU4NDpcdFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiA1ODU6XHRcdGNoYXIgKmthZGRyO1xuIDU4NjpcdFx0dW5zaWduZWQgbG9uZyBpLCBucGFnZXMgPSBkaXJfcGFnZXMoaW5vZGUpO1xuIDU4NzpcdFxuIDU4ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBhZ2VzOyBpJiM0MzsmIzQzOykge1xuIDU4OTpcdFx0XHRzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqZGU7XG4gNTkwOlx0XG4gNTkxOlx0XHRcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXHUwMDI2Zm9saW8pO1xuIDU5MjpcdFx0XHRpZiAoSVNfRVJSKGthZGRyKSlcbiA1OTM6XHRcdFx0XHRyZXR1cm4gMDtcbiA1OTQ6XHRcbiA1OTU6XHRcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiA1OTY6XHRcdFx0a2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpO1xuIDU5NzpcdFxuIDU5ODpcdFx0XHR3aGlsZSAoKGNoYXIgKilkZSBcdTAwM2M9IGthZGRyKSB7XG4gNTk5Olx0XHRcdFx0aWYgKGRlLVx1MDAzZWRfcmVjbGVuID09IDApIHtcbiA2MDA6XHRcdFx0XHRcdHVmc19lcnJvcihpbm9kZS1cdTAwM2VpX3NiLCBfX2Z1bmNfXyxcbiA2MDE6XHRcdFx0XHRcdFx0XCYjMzQ7emVyby1sZW5ndGggZGlyZWN0b3J5IGVudHJ5OiBcJiMzNDtcbiA2MDI6XHRcdFx0XHRcdFx0XCYjMzQ7a2FkZHI9JXAsIGRlPSVwXFxuXCYjMzQ7LCBrYWRkciwgZGUpO1xuIDYwMzpcdFx0XHRcdFx0Z290byBub3RfZW1wdHk7XG4gNjA0Olx0XHRcdFx0fVxuIDYwNTpcdFx0XHRcdGlmIChkZS1cdTAwM2VkX2lubykge1xuIDYwNjpcdFx0XHRcdFx0dTE2IG5hbWVsZW49dWZzX2dldF9kZV9uYW1sZW4oc2IsIGRlKTtcbiA2MDc6XHRcdFx0XHRcdC8qIGNoZWNrIGZvciAuIGFuZCAuLiAqL1xuIDYwODpcdFx0XHRcdFx0aWYgKGRlLVx1MDAzZWRfbmFtZVswXSAhPSAmIzM5Oy4mIzM5OylcbiA2MDk6XHRcdFx0XHRcdFx0Z290byBub3RfZW1wdHk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMTEKCQkJCQkJCW91dHB1dDogMTUwCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBwYXRjaCwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTGluZSA1OTMgaXMgd2hlcmUgdGhlIGNoYW5nZSBoYXBwZW5zIOKAkyBgY29udGludWU7YCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGByZXR1cm4gMDtgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIFRoZSBjb2RlIGlzIHByb2JhYmx5IGV4aXRpbmcgYSBsb29wIG9yIGNvbmRpdGlvbmFsIGJsb2NrIGVhcmx5IGluIHRoZSAqcG9zaXRpdmUqIHNlbnNlLCBpbnN0ZWFkIG9mIHNraXBwaW5nIG9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuIFRoZSBgcmV0dXJuIDA7YCBzaWduYWxzIGEgc3VjY2Vzc2Z1bCBleGl0IG9yIGNvbXBsZXRpb24gdG8gdGhlIGNhbGxlci4gTm90aGluZyBwYXJ0aWN1bGFybHkgY29tcGxleCB0aGVyZSBmcm9tIGEgY29kaW5nIHN0YW5kcG9pbnQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3MgcmVsYXRlZCB0byB0aGlzIGFyZSBgVUZTX0ZTYCBhbmQgYFVGU19GU19XUklURWAsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFVGUyBmaWxlIHN5c3RlbSwgYW5kIHBvdGVudGlhbGx5IHdyaXRlIG9wZXJhdGlvbnMgd2l0aGluIGl0LiBUaGUgaW50ZXJlc3Rpbmcgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gR2l2ZW4gdGhlIGZpbGUgc3lzdGVtIGNvbnRleHQsIG15IGd1dCBzYXlzIHRoaXMgYHJldHVybiAwO2AgbGlrZWx5IHJlbGF0ZXMgdG8gaG93IGRpcmVjdG9yeSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkLCBwb3RlbnRpYWxseSB3aGVuIHRoZXkgZW5jb3VudGVyIGFuIGVtcHR5IGRpcmVjdG9yeSBvciBuZWVkIHRvIGhhbmRsZSByZW5hbWVzL3JlbW92YWxzIGludm9sdmluZyBlbXB0eSBkaXJlY3Rvcmllcy4gVGhlIGdvYWwgd291bGQgYmUgdG8gYXZvaWQgYW4gZXJyb3IgY29uZGl0aW9uIGluIHRob3NlIGNhc2VzLgoKQmFzZWQgb24gdGhpcyBsaW1pdGVkIGluZm9ybWF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgcGF0Y2gmIzM5O3MgZnVuY3Rpb25hbCBpbXBhY3QuIEl0JiMzOTtzIGEgY2xlYW4sIGxvY2FsaXplZCBjaGFuZ2UuIEkmIzM5O2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHN0YXR1cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZW1wdHlfZGlyJiMzNDssCiAgICAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICAgJiMzNDt1ZnNfcmVuYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19lbXB0eV9kaXImIzM0OywKICAgICYjMzQ7dWZzX3JtZGlyJiMzNDssCiAgICAmIzM0O3Vmc19yZW5hbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJiMzOTtzIGRpcmVjdG9yeSBoYW5kbGluZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIGxpa2Ugcm1kaXIgYW5kIHJlbmFtZSB0aGF0IHJlbHkgb24gYHVmc19lbXB0eV9kaXJgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTIuMDQ5MTQzMDgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk3ODk2MzgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVUZTX0ZTXCIsXG4gICAgXCJVRlNfRlNfV1JJVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZnNfZW1wdHlfZGlyXCIsXG4gICAgXCJ1ZnNfcm1kaXJcIixcbiAgICBcInVmc19yZW5hbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGB1ZnNfZW1wdHlfZGlyYCB3aGVyZSBhIGZhaWx1cmUgdG8gZ2V0IGEgZm9saW8gd291bGQgcHJldmlvdXNseSBiZSBpZ25vcmVkICh2aWEgYGNvbnRpbnVlYCksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUgbG9vcHMgb3IgaW5jb3JyZWN0IGVtcHR5IGRpcmVjdG9yeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0ncyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTIuMDQ5MTUwOTU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM2OTMxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZmJmMTQ5ZjZlYmEzMTZkOWU2MTI4MTQyNWMyZWVlN2FlMmZiOGEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDc6NDU6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2Rpci5jIGIvZnMvdWZzL2Rpci5jXFxuaW5kZXggZTYyZmU1NjY3NjcxMC4uY2U0M2NmMjBiMDdjOSAxMDA2NDRcXG4tLS0gYS9mcy91ZnMvZGlyLmNcXG4rKysgYi9mcy91ZnMvZGlyLmNcXG5AQCAtNTkwLDcgKzU5MCw3IEBAIGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxcbiBcXG4gXFx0XFx0a2FkZHIgPSB1ZnNfZ2V0X2ZvbGlvKGlub2RlLCBpLCBcXHUwMDI2Zm9saW8pO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGthZGRyKSlcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0XFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcXG4gXFx0XFx0a2FkZHIgKz0gdWZzX2xhc3RfYnl0ZShpbm9kZSwgaSkgLSBVRlNfRElSX1JFQ19MRU4oMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ1OjUyLjY2NDEzODE2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI5MTc0NjE5NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2VtcHR5X2RpclwiLFxuICAgIFwidWZzX3JtZGlyXCIsXG4gICAgXCJ1ZnNfcmVuYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVmYmYxNDlmNmViYTMxNmQ5ZTYxMjgxNDI1YzJlZWU3YWUyZmI4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA3OjQ1OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2Rpci5jIGIvZnMvdWZzL2Rpci5jXG5pbmRleCBlNjJmZTU2Njc2NzEwLi5jZTQzY2YyMGIwN2M5IDEwMDY0NFxuLS0tIGEvZnMvdWZzL2Rpci5jXG4rKysgYi9mcy91ZnMvZGlyLmNcbkBAIC01OTAsNyArNTkwLDcgQEAgaW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICogaW5vZGUpXG4gXG4gXHRcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXHUwMDI2Zm9saW8pO1xuIFx0XHRpZiAoSVNfRVJSKGthZGRyKSlcbi1cdFx0XHRjb250aW51ZTtcbitcdFx0XHRyZXR1cm4gMDtcbiBcbiBcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiBcdFx0a2FkZHIgKz0gdWZzX2xhc3RfYnl0ZShpbm9kZSwgaSkgLSBVRlNfRElSX1JFQ19MRU4oMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NTo1Mi42NjQxNDE0MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU4MTE3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBwbGF5aW5nIHdpdGggYGZzL3Vmcy9kaXIuY2AsIHNwZWNpZmljYWxseSB0aGUgYHVmc19lbXB0eV9kaXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugc2luY2UgdGhlIGNvZGUgaXMgYWx0ZXJpbmcgY29udHJvbCBmbG93OyBpdCdzIHN3YXBwaW5nIGEgYGNvbnRpbnVlO2Agd2l0aCBhIGByZXR1cm4gMDtgIGFmdGVyIGEgY2FsbCB0byBgdWZzX2dldF9mb2xpb2AgYW5kIGVycm9yLiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiB3aXRoaW4gdGhlIFVGUyBmaWxlc3lzdGVtLiBNeSBndWVzcyBpcywgZ2l2ZW4gdGhlIG5hbWUsIHRoYXQgaXQncyBwcm9iYWJseSBpbnZvbHZlZCBpbiBjaGVja2luZyBpZiBhIGRpcmVjdG9yeSBpcyBlbXB0eS4gTGlrZWx5IGR1cmluZyBhbiBgcm1kaXJgIG9wZXJhdGlvbiwgcGVyaGFwcz8gTWFrZXMgc2Vuc2UuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSdsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIGB1ZnNfZW1wdHlfZGlyYCB3aXRoaW4gdGhlIGBmcy91ZnMvYCBkaXJlY3RvcnkgdG8gZ2V0IHNvbWUgY29udGV4dCBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTUuOTIyMjYyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1NjU0NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19lbXB0eV9kaXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvdWZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy91ZnMvZGlyLmM9NTMzPWludCB1ZnNfbWFrZV9lbXB0eShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGlub2RlICpkaXIpXFxuLS1cXG5mcy91ZnMvZGlyLmMtNTgwLSAqL1xcbmZzL3Vmcy9kaXIuYzo1ODE6aW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICogaW5vZGUpXFxuZnMvdWZzL2Rpci5jLTU4Mi17XFxuLS1cXG5mcy91ZnMvbmFtZWkuYz0yMjc9c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvdWZzL25hbWVpLmMtMjMxLVxcbmZzL3Vmcy9uYW1laS5jOjIzMjpcXHRpZiAodWZzX2VtcHR5X2RpciAoaW5vZGUpKSB7XFxuZnMvdWZzL25hbWVpLmMtMjMzLVxcdFxcdGVyciA9IHVmc191bmxpbmsoZGlyLCBkZW50cnkpO1xcbi0tXFxuZnMvdWZzL25hbWVpLmM9MjQzPXN0YXRpYyBpbnQgdWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxcbi0tXFxuZnMvdWZzL25hbWVpLmMtMjczLVxcdFxcdGVyciA9IC1FTk9URU1QVFk7XFxuZnMvdWZzL25hbWVpLmM6Mjc0OlxcdFxcdGlmIChkaXJfZGUgXFx1MDAyNlxcdTAwMjYgIXVmc19lbXB0eV9kaXIobmV3X2lub2RlKSlcXG5mcy91ZnMvbmFtZWkuYy0yNzUtXFx0XFx0XFx0Z290byBvdXRfZGlyO1xcbi0tXFxuZnMvdWZzL3Vmcy5oPTEwMz1pbnQgdWZzX2RlbGV0ZV9lbnRyeShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGZvbGlvICopO1xcbmZzL3Vmcy91ZnMuaDoxMDQ6aW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICopO1xcbmZzL3Vmcy91ZnMuaC0xMDUtc3RydWN0IHVmc19kaXJfZW50cnkgKnVmc19kb3Rkb3Qoc3RydWN0IGlub2RlICosIHN0cnVjdCBmb2xpbyAqKik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ1OjU2LjIwNzkyNDU0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjQzNDY5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlVGUyBEaXJlY3RvcnkgRW1wdGluZXNzIENoZWNrOiBBIENyaXRpY2FsIENvbnNpZGVyYXRpb24qKlxuXG5SaWdodCwgc28gYHVmc19lbXB0eV9kaXJgIGlzIG5vdyBiZWluZyBpbnZva2VkIGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLiBBbnl0aW1lIHlvdSBzdGFydCBzZWVpbmcgY2hhbmdlcyBhdCB0aGF0IGxldmVsLCB5b3UgbmVlZCB0byBwYXkgYXR0ZW50aW9uLiBUaGUgY29yZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBhcmUgdGhlIG1vc3QgY3JpdGljYWwsIHNvIGFueSByZWZhY3RvcmluZyB0aGVyZSBkZW1hbmRzIGEgY2xvc2UgbG9vayBhdCBwb3RlbnRpYWwgaW1wYWN0cy4gR2l2ZW4gdGhpcyBjaGFuZ2UsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVRlMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGFsaWducyB3aXRoIHRoaXMgbmV3IGNhbGwgY2hhaW4gYW5kIHRoYXQgdGhlcmUgYXJlbid0IGFueSB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyBvciBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhvc2UgdHdvIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCByZWxldmFudCBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTkuNTcyMjc1MTAyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mjk0ODYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTkuNzI1MjM3OTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0OTcxMTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFVGU19GU2AgYW5kIGBVRlNfRlNfV1JJVEVgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBwcm9wZXJseS4gSSBzZWUgdGhhdCBgdWZzX2VtcHR5X2RpcmAgaXMgaW52b2x2ZWQgaW4gYm90aCBgcm1kaXJgIGFuZCBgcmVuYW1lYCBvcGVyYXRpb25zLiBBbmQgdGhvc2UgYXJlIGRlZmluaXRlbHkgd3JpdGUgb3BlcmF0aW9ucywgc28gSSdtIHRoaW5raW5nIGBVRlNfRlNfV1JJVEVgICpzaG91bGQqIGJlIHJlcXVpcmVkLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24ndCBgVUZTX0ZTX1dSSVRFYCBkZXBlbmRlbnQgb24gYFVGU19GU2A/IFllcywgdGhhdCdzIHdoYXQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEl0J3MgYmVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJ2xsIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBzb3VyY2UgdG8gY29uZmlybSB0aGlzIGxvZ2ljIGFuZCBlbnN1cmUgSSBoYXZlIHRoZSBjb3JyZWN0IGRlcGVuZGVuY2llcyBpbiBwbGFjZS4gSXQncyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGVhbGluZyB3aXRoIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNvIGxldCBtZSBqdXN0IGNoZWNrIHRoYXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjAzLjY3NDk1Mzg5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy91ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFVGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbiAgIDU6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIEJTRCBhbmQgZGVyaXZhdGUgdmVyc2lvbnMgb2YgVW5peCAoc3VjaCBhcyBTdW5PUywgRnJlZUJTRCwgTmV0QlNELFxcbiAgIDg6XFx0XFx0ICBPcGVuQlNEIGFuZCBOZVhUc3RlcCkgdXNlIGEgZmlsZSBzeXN0ZW0gY2FsbGVkIFVGUy4gU29tZSBTeXN0ZW0gVlxcbiAgIDk6XFx0XFx0ICBVbml4ZXMgY2FuIGNyZWF0ZSBhbmQgbW91bnQgaGFyZCBkaXNrIHBhcnRpdGlvbnMgYW5kIGRpc2tldHRlcyB1c2luZ1xcbiAgMTA6XFx0XFx0ICB0aGlzIGZpbGUgc3lzdGVtIGFzIHdlbGwuIFNheWluZyBZIGhlcmUgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBmcm9tXFxuICAxMTpcXHRcXHQgIHRoZXNlIHBhcnRpdGlvbnM7IGlmIHlvdSBhbHNvIHdhbnQgdG8gd3JpdGUgdG8gdGhlbSwgc2F5IFkgdG8gdGhlXFxuICAxMjpcXHRcXHQgIGV4cGVyaW1lbnRhbCBcXFwiVUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnRcXFwiLCBiZWxvdy4gUGxlYXNlIHJlYWQgdGhlXFxuICAxMzpcXHRcXHQgIGZpbGUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS91ZnMucnN0XFx1MDAzZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0ICAgICAgICAgIFRoZSByZWNlbnRseSByZWxlYXNlZCBVRlMyIHZhcmlhbnQgKHVzZWQgaW4gRnJlZUJTRCA1LngpIGlzXFxuICAxNjpcXHQgICAgICAgICAgUkVBRC1PTkxZIHN1cHBvcnRlZC5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IG5vdCBuZWVkZWQgZm9yIGZsb3BwaWVzLCBzaW5jZSBhXFxuICAxOTpcXHRcXHQgIGdvb2QgcG9ydGFibGUgd2F5IHRvIHRyYW5zcG9ydCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYmV0d2VlbiB1bml4ZXNcXG4gIDIwOlxcdFxcdCAgKGFuZCBldmVuIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zKSBpcyBnaXZlbiBieSB0aGUgdGFyIHByb2dyYW0gKFxcXCJtYW5cXG4gIDIxOlxcdFxcdCAgdGFyXFxcIiBvciBwcmVmZXJhYmx5IFxcXCJpbmZvIHRhclxcXCIpLlxcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHQgIFdoZW4gYWNjZXNzaW5nIE5lWFRzdGVwIGZpbGVzLCB5b3UgbWF5IG5lZWQgdG8gY29udmVydCB0aGVtIGZyb20gdGhlXFxuICAyNDpcXHRcXHQgIE5lWFQgY2hhcmFjdGVyIHNldCB0byB0aGUgTGF0aW4xIGNoYXJhY3RlciBzZXQ7IHVzZSB0aGUgcHJvZ3JhbVxcbiAgMjU6XFx0XFx0ICByZWNvZGUgKFxcXCJpbmZvIHJlY29kZVxcXCIpIGZvciB0aGlzIHB1cnBvc2UuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGUgVUZTIGZpbGUgc3lzdGVtIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdWZzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIElmIHlvdSBoYXZlbid0IGhlYXJkIGFib3V0IGFsbCBvZiB0aGlzIGJlZm9yZSwgaXQncyBzYWZlIHRvIHNheSBOLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgVUZTX0ZTX1dSSVRFXFxuICAzMzpcXHRcXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gVUZTX0ZTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdHJ5IHdyaXRpbmcgdG8gVUZTIHBhcnRpdGlvbnMuIFRoaXMgaXNcXG4gIDM3OlxcdFxcdCAgZXhwZXJpbWVudGFsLCBzbyB5b3Ugc2hvdWxkIGJhY2sgdXAgeW91ciBVRlMgcGFydGl0aW9ucyBiZWZvcmVoYW5kLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgVUZTX0RFQlVHXFxuICA0MDpcXHRcXHRib29sIFxcXCJVRlMgZGVidWdnaW5nXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBVRlNfRlNcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIFVGUyBmaWxlc3lzdGVtLCBzYXlcXG4gIDQ0OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBfbWFueV8gYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG8gYmVcXG4gIDQ1OlxcdFxcdCAgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDY6MDMuNjc1MjIwMjMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMzU2MDA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gXHUwMDI2IENvcmUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVUZTX0ZTYCBhbmQgYFVGU19GU19XUklURWAuIFRoZXkgc2VlbSB0byBiZSB0aGUga2V5IHNldHRpbmdzIGZvciB0aGlzIHBhcnRpY3VsYXIgZmlsZXN5c3RlbS4gVGhlIHBhdGNoLCBzcGVjaWZpY2FsbHksIGlzIHRvdWNoaW5nIHRoZSBgdWZzX2VtcHR5X2RpcmAgZnVuY3Rpb24uIFRoYXQncyBteSBtYWluIHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBgVUZTYCBmaWxlc3lzdGVtIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuSSd2ZSBnb3QgYSBtZW50YWwgY2hlY2tsaXN0IG5vdy4gTGV0J3MgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBjZW50cmFsIHBpZWNlcyByZWxhdGVkIHRvIGRpcmVjdG9yeSBvcGVyYXRpb25zLCBhbmQgdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgZmlyc3Qgb25lLiBOb3csIGlzIGB1ZnNfZW1wdHlfZGlyYCBzdGF0aWM/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgaG93IGl0J3MgdXNlZC4gSXQncyBpbiBgZnMvdWZzL2Rpci5jYCwgd2hpY2ggbWFrZXMgaXQgKm5vdCogc3RhdGljLCBhbmQgbG9va3MgbGlrZSBpdCBpcyBleHBvcnRlZCBmb3IgdXNlIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc3ViZGlyZWN0b3J5LiBJIHNob3VsZCBjaGVjayB0aGF0IGZpbGUsIGBmcy91ZnMvZGlyLmNgLCB0byBiZSBzdXJlIG9mIHRoZSBzY29wZSBhbmQgdXNlIG9mIHRoYXQgY29yZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjA3Ljk4ODc4NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTA1NTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgdWZzX2VtcHR5X2RpclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy91ZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL2Rpci5jPTUzMz1pbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyKVxcbi0tXFxuZnMvdWZzL2Rpci5jLTU4MC0gKi9cXG5mcy91ZnMvZGlyLmM6NTgxOmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxcbmZzL3Vmcy9kaXIuYy01ODIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjowOC4xMTc4NTU2NjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2Njc1MjM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0LiBJdCdzIG5vdCBzdGF0aWM7IHRoZSBuYXR1cmUgb2YgdGhlIG9wZXJhdGlvbnMgd2UncmUgY29uY2VybmVkIHdpdGggaXMgZHluYW1pYy4gQnV0LCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdWZzX3JtZGlyYCBhbmQgYHVmc19yZW5hbWVgLCB0aGV5J3JlIGRlZmluZWQgYXMgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYGZzL3Vmcy9uYW1laS5jYC4gVGhhdCdzIGltcG9ydGFudC4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVuZGVkIHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBVRlMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQgaW1wbGllcyBhIGNlcnRhaW4gbGV2ZWwgb2YgaW50ZXJuYWwtb25seSBhY2Nlc3MgYW5kIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gc3BlY2lmaWMgdG8gdGhhdCBtb2R1bGUuIFRoaXMgc3RhdGljIG5hdHVyZSBhZmZlY3RzIGhvdyBhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSB2aXNpYmxlIGFuZCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgb3ZlcmFsbCBmaWxlc3lzdGVtIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjExLjA4NDYxMjkzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA0MjM1NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWZzX3JtZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Vmcy9uYW1laS5jPTIwNz1zdGF0aWMgaW50IHVmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL3Vmcy9uYW1laS5jLTIyNi1cXG5mcy91ZnMvbmFtZWkuYzoyMjc6c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL3Vmcy9uYW1laS5jLTIyOC17XFxuLS1cXG5mcy91ZnMvbmFtZWkuYz0zMTk9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvdWZzL25hbWVpLmMtMzI1LVxcdC5ta2RpclxcdFxcdD0gdWZzX21rZGlyLFxcbmZzL3Vmcy9uYW1laS5jOjMyNjpcXHQucm1kaXJcXHRcXHQ9IHVmc19ybWRpcixcXG5mcy91ZnMvbmFtZWkuYy0zMjctXFx0Lm1rbm9kXFx0XFx0PSB1ZnNfbWtub2QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjExLjE3NTA1NzQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQxOTIxMDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBGb2N1cyBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEluaXRpYWxseSwgSSB3YXMgbGVhbmluZyBhd2F5IGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCBiZWNhdXNlIHRoZXkncmUgZGVjbGFyZWQgc3RhdGljLCBhbmQgbXkgdW5kZXJzdGFuZGluZywgYmFzZWQgb24gdGhlIHByb21wdCwgaXMgdGhhdCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbmxpbmVkIGFuZCBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCB3YWl0LCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBUaGVzZSBmdW5jdGlvbnMsIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAsIGFyZSBhY3R1YWxseSBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVmc19kaXJfaW5vZGVfb3BlcmF0aW9uc2AuIFRoYXQgbWVhbnMgdGhleSAqYXJlKiBleHBvc2VkIGFzIEFQSSBlbnRyeXBvaW50cyB0byB0aGUgVkZTLCBhbmQgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQhIE9rYXksIGV4Y2VsbGVudC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgZm9jdXMgc3ltYm9scy4gVGhleSdyZSBjbGVhcmx5IGltcG9ydGFudCBlbnRyeXBvaW50cyBmb3IgZGlyZWN0b3J5IG1hbmlwdWxhdGlvbi4gQW5kIGB1ZnNfZW1wdHlfZGlyYCBpcyAqbm90KiBzdGF0aWMsIHNvIGl0J3MgZ29vZCB0b28uXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBaCB5ZXMsIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gR29vZCB0byBrZWVwIHRob3NlIGluIG1pbmQuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBidWcgd2l0aGluIGB1ZnNfZW1wdHlfZGlyYC4gSXQncyByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBlcnJvcnMgZnJvbSBgdWZzX2dldF9mb2xpb2AsIHdoaWNoIHBvdGVudGlhbGx5IHJlc3VsdHMgaW4gYW4gaW5maW5pdGUgbG9vcC4gU28sIHRoZSBmb2N1cyBoZXJlIHNob3VsZCBkZWZpbml0ZWx5IGJlIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucy4gYHJtZGlyYCBhbmQgYHJlbmFtZWAgZmVlbCBtb3N0IHJlbGV2YW50LiBUaGV5J3JlIGFsbCBwYXJ0IG9mIHRoZSBzYW1lIG9wZXJhdGlvbmFsIGRvbWFpbi5cblxuT2theSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBiYWNrIGFuZCBleGFtaW5lIGB1ZnNfZW1wdHlfZGlyYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvZGlyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIEkndmUgZ290IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjoxNy4xMTY5ODI3NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL3Vmcy9kaXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0ICovXFxuIDU4MTpcXHRpbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcXG4gNTgyOlxcdHtcXG4gNTgzOlxcdFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gNTg0OlxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW87XFxuIDU4NTpcXHRcXHRjaGFyICprYWRkcjtcXG4gNTg2OlxcdFxcdHVuc2lnbmVkIGxvbmcgaSwgbnBhZ2VzID0gZGlyX3BhZ2VzKGlub2RlKTtcXG4gNTg3OlxcdFxcbiA1ODg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wYWdlczsgaSsrKSB7XFxuIDU4OTpcXHRcXHRcXHRzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqZGU7XFxuIDU5MDpcXHRcXG4gNTkxOlxcdFxcdFxcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXFx1MDAyNmZvbGlvKTtcXG4gNTkyOlxcdFxcdFxcdGlmIChJU19FUlIoa2FkZHIpKVxcbiA1OTM6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU5NDpcXHRcXG4gNTk1OlxcdFxcdFxcdGRlID0gKHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICopa2FkZHI7XFxuIDU5NjpcXHRcXHRcXHRrYWRkciArPSB1ZnNfbGFzdF9ieXRlKGlub2RlLCBpKSAtIFVGU19ESVJfUkVDX0xFTigxKTtcXG4gNTk3OlxcdFxcbiA1OTg6XFx0XFx0XFx0d2hpbGUgKChjaGFyICopZGUgXFx1MDAzYz0ga2FkZHIpIHtcXG4gNTk5OlxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9yZWNsZW4gPT0gMCkge1xcbiA2MDA6XFx0XFx0XFx0XFx0XFx0dWZzX2Vycm9yKGlub2RlLVxcdTAwM2VpX3NiLCBfX2Z1bmNfXyxcXG4gNjAxOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJ6ZXJvLWxlbmd0aCBkaXJlY3RvcnkgZW50cnk6IFxcXCJcXG4gNjAyOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJrYWRkcj0lcCwgZGU9JXBcXFxcblxcXCIsIGthZGRyLCBkZSk7XFxuIDYwMzpcXHRcXHRcXHRcXHRcXHRnb3RvIG5vdF9lbXB0eTtcXG4gNjA0OlxcdFxcdFxcdFxcdH1cXG4gNjA1OlxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9pbm8pIHtcXG4gNjA2OlxcdFxcdFxcdFxcdFxcdHUxNiBuYW1lbGVuPXVmc19nZXRfZGVfbmFtbGVuKHNiLCBkZSk7XFxuIDYwNzpcXHRcXHRcXHRcXHRcXHQvKiBjaGVjayBmb3IgLiBhbmQgLi4gKi9cXG4gNjA4OlxcdFxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9uYW1lWzBdICE9ICcuJylcXG4gNjA5OlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gbm90X2VtcHR5O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjoxNy4xMTcxOTczNzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjM1MjU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgcGF0Y2gsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIExpbmUgNTkzIGlzIHdoZXJlIHRoZSBjaGFuZ2UgaGFwcGVucyDigJMgYGNvbnRpbnVlO2AgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgcmV0dXJuIDA7YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBUaGUgY29kZSBpcyBwcm9iYWJseSBleGl0aW5nIGEgbG9vcCBvciBjb25kaXRpb25hbCBibG9jayBlYXJseSBpbiB0aGUgKnBvc2l0aXZlKiBzZW5zZSwgaW5zdGVhZCBvZiBza2lwcGluZyBvbiB0byB0aGUgbmV4dCBlbGVtZW50LiBUaGUgYHJldHVybiAwO2Agc2lnbmFscyBhIHN1Y2Nlc3NmdWwgZXhpdCBvciBjb21wbGV0aW9uIHRvIHRoZSBjYWxsZXIuIE5vdGhpbmcgcGFydGljdWxhcmx5IGNvbXBsZXggdGhlcmUgZnJvbSBhIGNvZGluZyBzdGFuZHBvaW50LlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGUgY29uZmlncyByZWxhdGVkIHRvIHRoaXMgYXJlIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYCwgc28gd2UncmUgZGVhbGluZyB3aXRoIHRoZSBVRlMgZmlsZSBzeXN0ZW0sIGFuZCBwb3RlbnRpYWxseSB3cml0ZSBvcGVyYXRpb25zIHdpdGhpbiBpdC4gVGhlIGludGVyZXN0aW5nIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXJlIGB1ZnNfZW1wdHlfZGlyYCwgYHVmc19ybWRpcmAsIGFuZCBgdWZzX3JlbmFtZWAuIEdpdmVuIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0LCBteSBndXQgc2F5cyB0aGlzIGByZXR1cm4gMDtgIGxpa2VseSByZWxhdGVzIHRvIGhvdyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCwgcG90ZW50aWFsbHkgd2hlbiB0aGV5IGVuY291bnRlciBhbiBlbXB0eSBkaXJlY3Rvcnkgb3IgbmVlZCB0byBoYW5kbGUgcmVuYW1lcy9yZW1vdmFscyBpbnZvbHZpbmcgZW1wdHkgZGlyZWN0b3JpZXMuIFRoZSBnb2FsIHdvdWxkIGJlIHRvIGF2b2lkIGFuIGVycm9yIGNvbmRpdGlvbiBpbiB0aG9zZSBjYXNlcy5cblxuQmFzZWQgb24gdGhpcyBsaW1pdGVkIGluZm9ybWF0aW9uLCBJJ20gY29uZmlkZW50IGluIHRoZSBwYXRjaCdzIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCdzIGEgY2xlYW4sIGxvY2FsaXplZCBjaGFuZ2UuIEknbGwgZG9jdW1lbnQgbXkgZmluZGluZ3MgYW5kIHNldCB0aGUgc3RhdHVzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzExLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDY6MjEuNTk5NTU2MzE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MTk1MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19lbXB0eV9kaXJcIixcbiAgICBcInVmc19ybWRpclwiLFxuICAgIFwidWZzX3JlbmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSdzIGRpcmVjdG9yeSBoYW5kbGluZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIGxpa2Ugcm1kaXIgYW5kIHJlbmFtZSB0aGF0IHJlbHkgb24gYHVmc19lbXB0eV9kaXJgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2VtcHR5X2RpclwiLFxuICAgIFwidWZzX3JtZGlyXCIsXG4gICAgXCJ1ZnNfcmVuYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh7hj8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 07:05:13 +0000 UTC FinishedAt: 2026-08-02 07:46:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "d0be43f25d0dd778b0185d67b8b9f4ab70e68154", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "d0be43f25d0dd778b0185d67b8b9f4ab70e68154", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "daf26bd6-b2dd-436b-9a40-349e3984c784" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ufs_empty_dir", "ufs_rmdir", "ufs_rename" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZW1wdHlfZGlyJiMzNDssCiAgICAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICAgJiMzNDt1ZnNfcmVuYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNzo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmYmYxNDlmNmViYTMxNmQ5ZTYxMjgxNDI1YzJlZWU3YWUyZmI4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA3OjQ1OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9kaXIuYyBiL2ZzL3Vmcy9kaXIuY1xuaW5kZXggZTYyZmU1NjY3NjcxMC4uY2U0M2NmMjBiMDdjOSAxMDA2NDRcbi0tLSBhL2ZzL3Vmcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2Rpci5jXG5AQCAtNTkwLDcgJiM0Mzs1OTAsNyBAQCBpbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbiBcbiBcdFx0a2FkZHIgPSB1ZnNfZ2V0X2ZvbGlvKGlub2RlLCBpLCBcdTAwMjZmb2xpbyk7XG4gXHRcdGlmIChJU19FUlIoa2FkZHIpKVxuLVx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiBcbiBcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiBcdFx0a2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVRlNfRlMmIzM0OywKICAgICYjMzQ7VUZTX0ZTX1dSSVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWZzX2VtcHR5X2RpciYjMzQ7LAogICAgJiMzNDt1ZnNfcm1kaXImIzM0OywKICAgICYjMzQ7dWZzX3JlbmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGB1ZnNfZW1wdHlfZGlyYCB3aGVyZSBhIGZhaWx1cmUgdG8gZ2V0IGEgZm9saW8gd291bGQgcHJldmlvdXNseSBiZSBpZ25vcmVkICh2aWEgYGNvbnRpbnVlYCksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUgbG9vcHMgb3IgaW5jb3JyZWN0IGVtcHR5IGRpcmVjdG9yeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0mIzM5O3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZmJmMTQ5ZjZlYmEzMTZkOWU2MTI4MTQyNWMyZWVlN2FlMmZiOGEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNzo0NTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL3Vmcy9kaXIuYyBiL2ZzL3Vmcy9kaXIuYwppbmRleCBlNjJmZTU2Njc2NzEwLi5jZTQzY2YyMGIwN2M5IDEwMDY0NAotLS0gYS9mcy91ZnMvZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2Rpci5jCkBAIC01OTAsNyAmIzQzOzU5MCw3IEBAIGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKQogCiAJCWthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgJmFtcDtmb2xpbyk7CiAJCWlmIChJU19FUlIoa2FkZHIpKQotCQkJY29udGludWU7CiYjNDM7CQkJcmV0dXJuIDA7CiAKIAkJZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjsKIAkJa2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNzo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcGxheWluZyB3aXRoIGBmcy91ZnMvZGlyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB1ZnNfZW1wdHlfZGlyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHNpbmNlIHRoZSBjb2RlIGlzIGFsdGVyaW5nIGNvbnRyb2wgZmxvdzsgaXQmIzM5O3Mgc3dhcHBpbmcgYSBgY29udGludWU7YCB3aXRoIGEgYHJldHVybiAwO2AgYWZ0ZXIgYSBjYWxsIHRvIGB1ZnNfZ2V0X2ZvbGlvYCBhbmQgZXJyb3IuIEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXMqIHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0uIE15IGd1ZXNzIGlzLCBnaXZlbiB0aGUgbmFtZSwgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSBpbnZvbHZlZCBpbiBjaGVja2luZyBpZiBhIGRpcmVjdG9yeSBpcyBlbXB0eS4gTGlrZWx5IGR1cmluZyBhbiBgcm1kaXJgIG9wZXJhdGlvbiwgcGVyaGFwcz8gTWFrZXMgc2Vuc2UuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3IgYHVmc19lbXB0eV9kaXJgIHdpdGhpbiB0aGUgYGZzL3Vmcy9gIGRpcmVjdG9yeSB0byBnZXQgc29tZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vmc19lbXB0eV9kaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9kaXIuYz01MzM9aW50IHVmc19tYWtlX2VtcHR5KHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgaW5vZGUgKmRpcilcbi0tXG5mcy91ZnMvZGlyLmMtNTgwLSAqL1xuZnMvdWZzL2Rpci5jOjU4MTppbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbmZzL3Vmcy9kaXIuYy01ODIte1xuLS1cbmZzL3Vmcy9uYW1laS5jPTIyNz1zdGF0aWMgaW50IHVmc19ybWRpciAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvdWZzL25hbWVpLmMtMjMxLVxuZnMvdWZzL25hbWVpLmM6MjMyOlx0aWYgKHVmc19lbXB0eV9kaXIgKGlub2RlKSkge1xuZnMvdWZzL25hbWVpLmMtMjMzLVx0XHRlcnIgPSB1ZnNfdW5saW5rKGRpciwgZGVudHJ5KTtcbi0tXG5mcy91ZnMvbmFtZWkuYz0yNDM9c3RhdGljIGludCB1ZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4tLVxuZnMvdWZzL25hbWVpLmMtMjczLVx0XHRlcnIgPSAtRU5PVEVNUFRZO1xuZnMvdWZzL25hbWVpLmM6Mjc0Olx0XHRpZiAoZGlyX2RlIFx1MDAyNlx1MDAyNiAhdWZzX2VtcHR5X2RpcihuZXdfaW5vZGUpKVxuZnMvdWZzL25hbWVpLmMtMjc1LVx0XHRcdGdvdG8gb3V0X2Rpcjtcbi0tXG5mcy91ZnMvdWZzLmg9MTAzPWludCB1ZnNfZGVsZXRlX2VudHJ5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgZm9saW8gKik7XG5mcy91ZnMvdWZzLmg6MTA0OmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqKTtcbmZzL3Vmcy91ZnMuaC0xMDUtc3RydWN0IHVmc19kaXJfZW50cnkgKnVmc19kb3Rkb3Qoc3RydWN0IGlub2RlICosIHN0cnVjdCBmb2xpbyAqKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlVGUyBEaXJlY3RvcnkgRW1wdGluZXNzIENoZWNrOiBBIENyaXRpY2FsIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIGB1ZnNfZW1wdHlfZGlyYCBpcyBub3cgYmVpbmcgaW52b2tlZCBmcm9tIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIHNoaWZ0IHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEFueXRpbWUgeW91IHN0YXJ0IHNlZWluZyBjaGFuZ2VzIGF0IHRoYXQgbGV2ZWwsIHlvdSBuZWVkIHRvIHBheSBhdHRlbnRpb24uIFRoZSBjb3JlIGRpcmVjdG9yeSBvcGVyYXRpb25zIGFyZSB0aGUgbW9zdCBjcml0aWNhbCwgc28gYW55IHJlZmFjdG9yaW5nIHRoZXJlIGRlbWFuZHMgYSBjbG9zZSBsb29rIGF0IHBvdGVudGlhbCBpbXBhY3RzLiBHaXZlbiB0aGlzIGNoYW5nZSwgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyByZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVGUy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgYWxpZ25zIHdpdGggdGhpcyBuZXcgY2FsbCBjaGFpbiBhbmQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyBvciBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhvc2UgdHdvIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCByZWxldmFudCBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcbmZzL3Vmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuLS1cbmZzL3Vmcy9LY29uZmlnLTMxLVxuZnMvdWZzL0tjb25maWc6MzI6Y29uZmlnIFVGU19GU19XUklURVxuZnMvdWZzL0tjb25maWctMzMtXHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIEkgc2VlIHRoYXQgYHVmc19lbXB0eV9kaXJgIGlzIGludm9sdmVkIGluIGJvdGggYHJtZGlyYCBhbmQgYHJlbmFtZWAgb3BlcmF0aW9ucy4gQW5kIHRob3NlIGFyZSBkZWZpbml0ZWx5IHdyaXRlIG9wZXJhdGlvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgYFVGU19GU19XUklURWAgKnNob3VsZCogYmUgcmVxdWlyZWQuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYFVGU19GU19XUklURWAgZGVwZW5kZW50IG9uIGBVRlNfRlNgPyBZZXMsIHRoYXQmIzM5O3Mgd2hhdCBteSBleHBlcmllbmNlIHRlbGxzIG1lLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQmIzM5O3MgYmVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUgc291cmNlIHRvIGNvbmZpcm0gdGhpcyBsb2dpYyBhbmQgZW5zdXJlIEkgaGF2ZSB0aGUgY29ycmVjdCBkZXBlbmRlbmNpZXMgaW4gcGxhY2UuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGggZmlsZXN5c3RlbSBjb25maWd1cmF0aW9ucywgc28gbGV0IG1lIGp1c3QgY2hlY2sgdGhhdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvdWZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgVUZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBCTE9DS1xuICAgNTpcdFx0c2VsZWN0IEJVRkZFUl9IRUFEXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIEJTRCBhbmQgZGVyaXZhdGUgdmVyc2lvbnMgb2YgVW5peCAoc3VjaCBhcyBTdW5PUywgRnJlZUJTRCwgTmV0QlNELFxuICAgODpcdFx0ICBPcGVuQlNEIGFuZCBOZVhUc3RlcCkgdXNlIGEgZmlsZSBzeXN0ZW0gY2FsbGVkIFVGUy4gU29tZSBTeXN0ZW0gVlxuICAgOTpcdFx0ICBVbml4ZXMgY2FuIGNyZWF0ZSBhbmQgbW91bnQgaGFyZCBkaXNrIHBhcnRpdGlvbnMgYW5kIGRpc2tldHRlcyB1c2luZ1xuICAxMDpcdFx0ICB0aGlzIGZpbGUgc3lzdGVtIGFzIHdlbGwuIFNheWluZyBZIGhlcmUgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBmcm9tXG4gIDExOlx0XHQgIHRoZXNlIHBhcnRpdGlvbnM7IGlmIHlvdSBhbHNvIHdhbnQgdG8gd3JpdGUgdG8gdGhlbSwgc2F5IFkgdG8gdGhlXG4gIDEyOlx0XHQgIGV4cGVyaW1lbnRhbCBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydFwmIzM0OywgYmVsb3cuIFBsZWFzZSByZWFkIHRoZVxuICAxMzpcdFx0ICBmaWxlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS91ZnMucnN0XHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdCAgICAgICAgICBUaGUgcmVjZW50bHkgcmVsZWFzZWQgVUZTMiB2YXJpYW50ICh1c2VkIGluIEZyZWVCU0QgNS54KSBpc1xuICAxNjpcdCAgICAgICAgICBSRUFELU9OTFkgc3VwcG9ydGVkLlxuICAxNzpcdFxuICAxODpcdFx0ICBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IG5vdCBuZWVkZWQgZm9yIGZsb3BwaWVzLCBzaW5jZSBhXG4gIDE5Olx0XHQgIGdvb2QgcG9ydGFibGUgd2F5IHRvIHRyYW5zcG9ydCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYmV0d2VlbiB1bml4ZXNcbiAgMjA6XHRcdCAgKGFuZCBldmVuIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zKSBpcyBnaXZlbiBieSB0aGUgdGFyIHByb2dyYW0gKFwmIzM0O21hblxuICAyMTpcdFx0ICB0YXJcJiMzNDsgb3IgcHJlZmVyYWJseSBcJiMzNDtpbmZvIHRhclwmIzM0OykuXG4gIDIyOlx0XG4gIDIzOlx0XHQgIFdoZW4gYWNjZXNzaW5nIE5lWFRzdGVwIGZpbGVzLCB5b3UgbWF5IG5lZWQgdG8gY29udmVydCB0aGVtIGZyb20gdGhlXG4gIDI0Olx0XHQgIE5lWFQgY2hhcmFjdGVyIHNldCB0byB0aGUgTGF0aW4xIGNoYXJhY3RlciBzZXQ7IHVzZSB0aGUgcHJvZ3JhbVxuICAyNTpcdFx0ICByZWNvZGUgKFwmIzM0O2luZm8gcmVjb2RlXCYjMzQ7KSBmb3IgdGhpcyBwdXJwb3NlLlxuICAyNjpcdFxuICAyNzpcdFx0ICBUbyBjb21waWxlIHRoZSBVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1ZnMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBoYXZlbiYjMzk7dCBoZWFyZCBhYm91dCBhbGwgb2YgdGhpcyBiZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gc2F5IE4uXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFVGU19GU19XUklURVxuICAzMzpcdFx0Ym9vbCBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVwmIzM0O1xuICAzNDpcdFx0ZGVwZW5kcyBvbiBVRlNfRlNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB0cnkgd3JpdGluZyB0byBVRlMgcGFydGl0aW9ucy4gVGhpcyBpc1xuICAzNzpcdFx0ICBleHBlcmltZW50YWwsIHNvIHlvdSBzaG91bGQgYmFjayB1cCB5b3VyIFVGUyBwYXJ0aXRpb25zIGJlZm9yZWhhbmQuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFVGU19ERUJVR1xuICA0MDpcdFx0Ym9vbCBcJiMzNDtVRlMgZGVidWdnaW5nXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIFVGU19GU1xuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgVUZTIGZpbGVzeXN0ZW0sIHNheVxuICA0NDpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIF9tYW55XyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0byBiZVxuICA0NTpcdFx0ICB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uICZhbXA7IENvcmUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gVGhleSBzZWVtIHRvIGJlIHRoZSBrZXkgc2V0dGluZ3MgZm9yIHRoaXMgcGFydGljdWxhciBmaWxlc3lzdGVtLiBUaGUgcGF0Y2gsIHNwZWNpZmljYWxseSwgaXMgdG91Y2hpbmcgdGhlIGB1ZnNfZW1wdHlfZGlyYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBteSBtYWluIHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBgVUZTYCBmaWxlc3lzdGVtIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkkmIzM5O3ZlIGdvdCBhIG1lbnRhbCBjaGVja2xpc3Qgbm93LiBMZXQmIzM5O3MgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBjZW50cmFsIHBpZWNlcyByZWxhdGVkIHRvIGRpcmVjdG9yeSBvcGVyYXRpb25zLCBhbmQgdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgZmlyc3Qgb25lLiBOb3csIGlzIGB1ZnNfZW1wdHlfZGlyYCBzdGF0aWM/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBJdCYjMzk7cyBpbiBgZnMvdWZzL2Rpci5jYCwgd2hpY2ggbWFrZXMgaXQgKm5vdCogc3RhdGljLCBhbmQgbG9va3MgbGlrZSBpdCBpcyBleHBvcnRlZCBmb3IgdXNlIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc3ViZGlyZWN0b3J5LiBJIHNob3VsZCBjaGVjayB0aGF0IGZpbGUsIGBmcy91ZnMvZGlyLmNgLCB0byBiZSBzdXJlIG9mIHRoZSBzY29wZSBhbmQgdXNlIG9mIHRoYXQgY29yZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHVmc19lbXB0eV9kaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL2Rpci5jPTUzMz1pbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyKVxuLS1cbmZzL3Vmcy9kaXIuYy01ODAtICovXG5mcy91ZnMvZGlyLmM6NTgxOmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxuZnMvdWZzL2Rpci5jLTU4Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBVRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQuIEl0JiMzOTtzIG5vdCBzdGF0aWM7IHRoZSBuYXR1cmUgb2YgdGhlIG9wZXJhdGlvbnMgd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGlzIGR5bmFtaWMuIEJ1dCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCwgdGhleSYjMzk7cmUgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgZnMvdWZzL25hbWVpLmNgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQmIzM5O3MgYSBrZXkgZGV0YWlsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbnRlbmRlZCB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEl0IGltcGxpZXMgYSBjZXJ0YWluIGxldmVsIG9mIGludGVybmFsLW9ubHkgYWNjZXNzIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBUaGlzIHN0YXRpYyBuYXR1cmUgYWZmZWN0cyBob3cgYW5kIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIG92ZXJhbGwgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9uYW1laS5jPTIwNz1zdGF0aWMgaW50IHVmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy91ZnMvbmFtZWkuYy0yMjYtXG5mcy91ZnMvbmFtZWkuYzoyMjc6c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuZnMvdWZzL25hbWVpLmMtMjI4LXtcbi0tXG5mcy91ZnMvbmFtZWkuYz0zMTk9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Vmcy9uYW1laS5jLTMyNS1cdC5ta2Rpclx0XHQ9IHVmc19ta2RpcixcbmZzL3Vmcy9uYW1laS5jOjMyNjpcdC5ybWRpclx0XHQ9IHVmc19ybWRpcixcbmZzL3Vmcy9uYW1laS5jLTMyNy1cdC5ta25vZFx0XHQ9IHVmc19ta25vZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEluaXRpYWxseSwgSSB3YXMgbGVhbmluZyBhd2F5IGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCBiZWNhdXNlIHRoZXkmIzM5O3JlIGRlY2xhcmVkIHN0YXRpYywgYW5kIG15IHVuZGVyc3RhbmRpbmcsIGJhc2VkIG9uIHRoZSBwcm9tcHQsIGlzIHRoYXQgc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gaW5saW5lZCBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IHdhaXQsIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBUaGVzZSBmdW5jdGlvbnMsIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAsIGFyZSBhY3R1YWxseSBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVmc19kaXJfaW5vZGVfb3BlcmF0aW9uc2AuIFRoYXQgbWVhbnMgdGhleSAqYXJlKiBleHBvc2VkIGFzIEFQSSBlbnRyeXBvaW50cyB0byB0aGUgVkZTLCBhbmQgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQhIE9rYXksIGV4Y2VsbGVudC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgZm9jdXMgc3ltYm9scy4gVGhleSYjMzk7cmUgY2xlYXJseSBpbXBvcnRhbnQgZW50cnlwb2ludHMgZm9yIGRpcmVjdG9yeSBtYW5pcHVsYXRpb24uIEFuZCBgdWZzX2VtcHR5X2RpcmAgaXMgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBnb29kIHRvby4KCk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBaCB5ZXMsIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gR29vZCB0byBrZWVwIHRob3NlIGluIG1pbmQuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgYnVnIHdpdGhpbiBgdWZzX2VtcHR5X2RpcmAuIEl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGhhbmRsaW5nIG9mIGVycm9ycyBmcm9tIGB1ZnNfZ2V0X2ZvbGlvYCwgd2hpY2ggcG90ZW50aWFsbHkgcmVzdWx0cyBpbiBhbiBpbmZpbml0ZSBsb29wLiBTbywgdGhlIGZvY3VzIGhlcmUgc2hvdWxkIGRlZmluaXRlbHkgYmUgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zLiBgcm1kaXJgIGFuZCBgcmVuYW1lYCBmZWVsIG1vc3QgcmVsZXZhbnQuIFRoZXkmIzM5O3JlIGFsbCBwYXJ0IG9mIHRoZSBzYW1lIG9wZXJhdGlvbmFsIGRvbWFpbi4KCk9rYXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHVmc19lbXB0eV9kaXJgIGFnYWluLCBzcGVjaWZpY2FsbHkgaW4gYGZzL3Vmcy9kaXIuY2AuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy91ZnMvZGlyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdCAqL1xuIDU4MTpcdGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxuIDU4MjpcdHtcbiA1ODM6XHRcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cdTAwM2VpX3NiO1xuIDU4NDpcdFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiA1ODU6XHRcdGNoYXIgKmthZGRyO1xuIDU4NjpcdFx0dW5zaWduZWQgbG9uZyBpLCBucGFnZXMgPSBkaXJfcGFnZXMoaW5vZGUpO1xuIDU4NzpcdFxuIDU4ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBhZ2VzOyBpJiM0MzsmIzQzOykge1xuIDU4OTpcdFx0XHRzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqZGU7XG4gNTkwOlx0XG4gNTkxOlx0XHRcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXHUwMDI2Zm9saW8pO1xuIDU5MjpcdFx0XHRpZiAoSVNfRVJSKGthZGRyKSlcbiA1OTM6XHRcdFx0XHRyZXR1cm4gMDtcbiA1OTQ6XHRcbiA1OTU6XHRcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiA1OTY6XHRcdFx0a2FkZHIgJiM0Mzs9IHVmc19sYXN0X2J5dGUoaW5vZGUsIGkpIC0gVUZTX0RJUl9SRUNfTEVOKDEpO1xuIDU5NzpcdFxuIDU5ODpcdFx0XHR3aGlsZSAoKGNoYXIgKilkZSBcdTAwM2M9IGthZGRyKSB7XG4gNTk5Olx0XHRcdFx0aWYgKGRlLVx1MDAzZWRfcmVjbGVuID09IDApIHtcbiA2MDA6XHRcdFx0XHRcdHVmc19lcnJvcihpbm9kZS1cdTAwM2VpX3NiLCBfX2Z1bmNfXyxcbiA2MDE6XHRcdFx0XHRcdFx0XCYjMzQ7emVyby1sZW5ndGggZGlyZWN0b3J5IGVudHJ5OiBcJiMzNDtcbiA2MDI6XHRcdFx0XHRcdFx0XCYjMzQ7a2FkZHI9JXAsIGRlPSVwXFxuXCYjMzQ7LCBrYWRkciwgZGUpO1xuIDYwMzpcdFx0XHRcdFx0Z290byBub3RfZW1wdHk7XG4gNjA0Olx0XHRcdFx0fVxuIDYwNTpcdFx0XHRcdGlmIChkZS1cdTAwM2VkX2lubykge1xuIDYwNjpcdFx0XHRcdFx0dTE2IG5hbWVsZW49dWZzX2dldF9kZV9uYW1sZW4oc2IsIGRlKTtcbiA2MDc6XHRcdFx0XHRcdC8qIGNoZWNrIGZvciAuIGFuZCAuLiAqL1xuIDYwODpcdFx0XHRcdFx0aWYgKGRlLVx1MDAzZWRfbmFtZVswXSAhPSAmIzM5Oy4mIzM5OylcbiA2MDk6XHRcdFx0XHRcdFx0Z290byBub3RfZW1wdHk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMTEKCQkJCQkJCW91dHB1dDogMTUwCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBwYXRjaCwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTGluZSA1OTMgaXMgd2hlcmUgdGhlIGNoYW5nZSBoYXBwZW5zIOKAkyBgY29udGludWU7YCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGByZXR1cm4gMDtgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIFRoZSBjb2RlIGlzIHByb2JhYmx5IGV4aXRpbmcgYSBsb29wIG9yIGNvbmRpdGlvbmFsIGJsb2NrIGVhcmx5IGluIHRoZSAqcG9zaXRpdmUqIHNlbnNlLCBpbnN0ZWFkIG9mIHNraXBwaW5nIG9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuIFRoZSBgcmV0dXJuIDA7YCBzaWduYWxzIGEgc3VjY2Vzc2Z1bCBleGl0IG9yIGNvbXBsZXRpb24gdG8gdGhlIGNhbGxlci4gTm90aGluZyBwYXJ0aWN1bGFybHkgY29tcGxleCB0aGVyZSBmcm9tIGEgY29kaW5nIHN0YW5kcG9pbnQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgY29udGV4dC4gVGhlIGNvbmZpZ3MgcmVsYXRlZCB0byB0aGlzIGFyZSBgVUZTX0ZTYCBhbmQgYFVGU19GU19XUklURWAsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFVGUyBmaWxlIHN5c3RlbSwgYW5kIHBvdGVudGlhbGx5IHdyaXRlIG9wZXJhdGlvbnMgd2l0aGluIGl0LiBUaGUgaW50ZXJlc3Rpbmcgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gR2l2ZW4gdGhlIGZpbGUgc3lzdGVtIGNvbnRleHQsIG15IGd1dCBzYXlzIHRoaXMgYHJldHVybiAwO2AgbGlrZWx5IHJlbGF0ZXMgdG8gaG93IGRpcmVjdG9yeSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkLCBwb3RlbnRpYWxseSB3aGVuIHRoZXkgZW5jb3VudGVyIGFuIGVtcHR5IGRpcmVjdG9yeSBvciBuZWVkIHRvIGhhbmRsZSByZW5hbWVzL3JlbW92YWxzIGludm9sdmluZyBlbXB0eSBkaXJlY3Rvcmllcy4gVGhlIGdvYWwgd291bGQgYmUgdG8gYXZvaWQgYW4gZXJyb3IgY29uZGl0aW9uIGluIHRob3NlIGNhc2VzLgoKQmFzZWQgb24gdGhpcyBsaW1pdGVkIGluZm9ybWF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgcGF0Y2gmIzM5O3MgZnVuY3Rpb25hbCBpbXBhY3QuIEl0JiMzOTtzIGEgY2xlYW4sIGxvY2FsaXplZCBjaGFuZ2UuIEkmIzM5O2xsIGRvY3VtZW50IG15IGZpbmRpbmdzIGFuZCBzZXQgdGhlIHN0YXR1cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZW1wdHlfZGlyJiMzNDssCiAgICAmIzM0O3Vmc19ybWRpciYjMzQ7LAogICAgJiMzNDt1ZnNfcmVuYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19lbXB0eV9kaXImIzM0OywKICAgICYjMzQ7dWZzX3JtZGlyJiMzNDssCiAgICAmIzM0O3Vmc19yZW5hbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJiMzOTtzIGRpcmVjdG9yeSBoYW5kbGluZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIGxpa2Ugcm1kaXIgYW5kIHJlbmFtZSB0aGF0IHJlbHkgb24gYHVmc19lbXB0eV9kaXJgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTIuMDQ5MTQzMDgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk3ODk2MzgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVUZTX0ZTXCIsXG4gICAgXCJVRlNfRlNfV1JJVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZnNfZW1wdHlfZGlyXCIsXG4gICAgXCJ1ZnNfcm1kaXJcIixcbiAgICBcInVmc19yZW5hbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGB1ZnNfZW1wdHlfZGlyYCB3aGVyZSBhIGZhaWx1cmUgdG8gZ2V0IGEgZm9saW8gd291bGQgcHJldmlvdXNseSBiZSBpZ25vcmVkICh2aWEgYGNvbnRpbnVlYCksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUgbG9vcHMgb3IgaW5jb3JyZWN0IGVtcHR5IGRpcmVjdG9yeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0ncyBkaXJlY3RvcnkgaGFuZGxpbmcgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBsaWtlIHJtZGlyIGFuZCByZW5hbWUgdGhhdCByZWx5IG9uIGB1ZnNfZW1wdHlfZGlyYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTIuMDQ5MTUwOTU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM2OTMxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZmJmMTQ5ZjZlYmEzMTZkOWU2MTI4MTQyNWMyZWVlN2FlMmZiOGEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDc6NDU6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2Rpci5jIGIvZnMvdWZzL2Rpci5jXFxuaW5kZXggZTYyZmU1NjY3NjcxMC4uY2U0M2NmMjBiMDdjOSAxMDA2NDRcXG4tLS0gYS9mcy91ZnMvZGlyLmNcXG4rKysgYi9mcy91ZnMvZGlyLmNcXG5AQCAtNTkwLDcgKzU5MCw3IEBAIGludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxcbiBcXG4gXFx0XFx0a2FkZHIgPSB1ZnNfZ2V0X2ZvbGlvKGlub2RlLCBpLCBcXHUwMDI2Zm9saW8pO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGthZGRyKSlcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0XFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcXG4gXFx0XFx0a2FkZHIgKz0gdWZzX2xhc3RfYnl0ZShpbm9kZSwgaSkgLSBVRlNfRElSX1JFQ19MRU4oMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ1OjUyLjY2NDEzODE2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI5MTc0NjE5NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2VtcHR5X2RpclwiLFxuICAgIFwidWZzX3JtZGlyXCIsXG4gICAgXCJ1ZnNfcmVuYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVmYmYxNDlmNmViYTMxNmQ5ZTYxMjgxNDI1YzJlZWU3YWUyZmI4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA3OjQ1OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2Rpci5jIGIvZnMvdWZzL2Rpci5jXG5pbmRleCBlNjJmZTU2Njc2NzEwLi5jZTQzY2YyMGIwN2M5IDEwMDY0NFxuLS0tIGEvZnMvdWZzL2Rpci5jXG4rKysgYi9mcy91ZnMvZGlyLmNcbkBAIC01OTAsNyArNTkwLDcgQEAgaW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICogaW5vZGUpXG4gXG4gXHRcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXHUwMDI2Zm9saW8pO1xuIFx0XHRpZiAoSVNfRVJSKGthZGRyKSlcbi1cdFx0XHRjb250aW51ZTtcbitcdFx0XHRyZXR1cm4gMDtcbiBcbiBcdFx0ZGUgPSAoc3RydWN0IHVmc19kaXJfZW50cnkgKilrYWRkcjtcbiBcdFx0a2FkZHIgKz0gdWZzX2xhc3RfYnl0ZShpbm9kZSwgaSkgLSBVRlNfRElSX1JFQ19MRU4oMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NTo1Mi42NjQxNDE0MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU4MTE3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBwbGF5aW5nIHdpdGggYGZzL3Vmcy9kaXIuY2AsIHNwZWNpZmljYWxseSB0aGUgYHVmc19lbXB0eV9kaXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugc2luY2UgdGhlIGNvZGUgaXMgYWx0ZXJpbmcgY29udHJvbCBmbG93OyBpdCdzIHN3YXBwaW5nIGEgYGNvbnRpbnVlO2Agd2l0aCBhIGByZXR1cm4gMDtgIGFmdGVyIGEgY2FsbCB0byBgdWZzX2dldF9mb2xpb2AgYW5kIGVycm9yLiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiB3aXRoaW4gdGhlIFVGUyBmaWxlc3lzdGVtLiBNeSBndWVzcyBpcywgZ2l2ZW4gdGhlIG5hbWUsIHRoYXQgaXQncyBwcm9iYWJseSBpbnZvbHZlZCBpbiBjaGVja2luZyBpZiBhIGRpcmVjdG9yeSBpcyBlbXB0eS4gTGlrZWx5IGR1cmluZyBhbiBgcm1kaXJgIG9wZXJhdGlvbiwgcGVyaGFwcz8gTWFrZXMgc2Vuc2UuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSdsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIGB1ZnNfZW1wdHlfZGlyYCB3aXRoaW4gdGhlIGBmcy91ZnMvYCBkaXJlY3RvcnkgdG8gZ2V0IHNvbWUgY29udGV4dCBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTUuOTIyMjYyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1NjU0NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19lbXB0eV9kaXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvdWZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy91ZnMvZGlyLmM9NTMzPWludCB1ZnNfbWFrZV9lbXB0eShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGlub2RlICpkaXIpXFxuLS1cXG5mcy91ZnMvZGlyLmMtNTgwLSAqL1xcbmZzL3Vmcy9kaXIuYzo1ODE6aW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICogaW5vZGUpXFxuZnMvdWZzL2Rpci5jLTU4Mi17XFxuLS1cXG5mcy91ZnMvbmFtZWkuYz0yMjc9c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvdWZzL25hbWVpLmMtMjMxLVxcbmZzL3Vmcy9uYW1laS5jOjIzMjpcXHRpZiAodWZzX2VtcHR5X2RpciAoaW5vZGUpKSB7XFxuZnMvdWZzL25hbWVpLmMtMjMzLVxcdFxcdGVyciA9IHVmc191bmxpbmsoZGlyLCBkZW50cnkpO1xcbi0tXFxuZnMvdWZzL25hbWVpLmM9MjQzPXN0YXRpYyBpbnQgdWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxcbi0tXFxuZnMvdWZzL25hbWVpLmMtMjczLVxcdFxcdGVyciA9IC1FTk9URU1QVFk7XFxuZnMvdWZzL25hbWVpLmM6Mjc0OlxcdFxcdGlmIChkaXJfZGUgXFx1MDAyNlxcdTAwMjYgIXVmc19lbXB0eV9kaXIobmV3X2lub2RlKSlcXG5mcy91ZnMvbmFtZWkuYy0yNzUtXFx0XFx0XFx0Z290byBvdXRfZGlyO1xcbi0tXFxuZnMvdWZzL3Vmcy5oPTEwMz1pbnQgdWZzX2RlbGV0ZV9lbnRyeShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGZvbGlvICopO1xcbmZzL3Vmcy91ZnMuaDoxMDQ6aW50IHVmc19lbXB0eV9kaXIoc3RydWN0IGlub2RlICopO1xcbmZzL3Vmcy91ZnMuaC0xMDUtc3RydWN0IHVmc19kaXJfZW50cnkgKnVmc19kb3Rkb3Qoc3RydWN0IGlub2RlICosIHN0cnVjdCBmb2xpbyAqKik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ1OjU2LjIwNzkyNDU0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjQzNDY5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlVGUyBEaXJlY3RvcnkgRW1wdGluZXNzIENoZWNrOiBBIENyaXRpY2FsIENvbnNpZGVyYXRpb24qKlxuXG5SaWdodCwgc28gYHVmc19lbXB0eV9kaXJgIGlzIG5vdyBiZWluZyBpbnZva2VkIGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLiBBbnl0aW1lIHlvdSBzdGFydCBzZWVpbmcgY2hhbmdlcyBhdCB0aGF0IGxldmVsLCB5b3UgbmVlZCB0byBwYXkgYXR0ZW50aW9uLiBUaGUgY29yZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBhcmUgdGhlIG1vc3QgY3JpdGljYWwsIHNvIGFueSByZWZhY3RvcmluZyB0aGVyZSBkZW1hbmRzIGEgY2xvc2UgbG9vayBhdCBwb3RlbnRpYWwgaW1wYWN0cy4gR2l2ZW4gdGhpcyBjaGFuZ2UsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVRlMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGFsaWducyB3aXRoIHRoaXMgbmV3IGNhbGwgY2hhaW4gYW5kIHRoYXQgdGhlcmUgYXJlbid0IGFueSB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyBvciBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhvc2UgdHdvIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCByZWxldmFudCBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTkuNTcyMjc1MTAyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mjk0ODYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDU6NTkuNzI1MjM3OTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0OTcxMTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFVGU19GU2AgYW5kIGBVRlNfRlNfV1JJVEVgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBwcm9wZXJseS4gSSBzZWUgdGhhdCBgdWZzX2VtcHR5X2RpcmAgaXMgaW52b2x2ZWQgaW4gYm90aCBgcm1kaXJgIGFuZCBgcmVuYW1lYCBvcGVyYXRpb25zLiBBbmQgdGhvc2UgYXJlIGRlZmluaXRlbHkgd3JpdGUgb3BlcmF0aW9ucywgc28gSSdtIHRoaW5raW5nIGBVRlNfRlNfV1JJVEVgICpzaG91bGQqIGJlIHJlcXVpcmVkLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpc24ndCBgVUZTX0ZTX1dSSVRFYCBkZXBlbmRlbnQgb24gYFVGU19GU2A/IFllcywgdGhhdCdzIHdoYXQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEl0J3MgYmVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJ2xsIG5lZWQgdG8gcmVmZXJlbmNlIHRoZSBzb3VyY2UgdG8gY29uZmlybSB0aGlzIGxvZ2ljIGFuZCBlbnN1cmUgSSBoYXZlIHRoZSBjb3JyZWN0IGRlcGVuZGVuY2llcyBpbiBwbGFjZS4gSXQncyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGVhbGluZyB3aXRoIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNvIGxldCBtZSBqdXN0IGNoZWNrIHRoYXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjAzLjY3NDk1Mzg5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy91ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFVGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbiAgIDU6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIEJTRCBhbmQgZGVyaXZhdGUgdmVyc2lvbnMgb2YgVW5peCAoc3VjaCBhcyBTdW5PUywgRnJlZUJTRCwgTmV0QlNELFxcbiAgIDg6XFx0XFx0ICBPcGVuQlNEIGFuZCBOZVhUc3RlcCkgdXNlIGEgZmlsZSBzeXN0ZW0gY2FsbGVkIFVGUy4gU29tZSBTeXN0ZW0gVlxcbiAgIDk6XFx0XFx0ICBVbml4ZXMgY2FuIGNyZWF0ZSBhbmQgbW91bnQgaGFyZCBkaXNrIHBhcnRpdGlvbnMgYW5kIGRpc2tldHRlcyB1c2luZ1xcbiAgMTA6XFx0XFx0ICB0aGlzIGZpbGUgc3lzdGVtIGFzIHdlbGwuIFNheWluZyBZIGhlcmUgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBmcm9tXFxuICAxMTpcXHRcXHQgIHRoZXNlIHBhcnRpdGlvbnM7IGlmIHlvdSBhbHNvIHdhbnQgdG8gd3JpdGUgdG8gdGhlbSwgc2F5IFkgdG8gdGhlXFxuICAxMjpcXHRcXHQgIGV4cGVyaW1lbnRhbCBcXFwiVUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnRcXFwiLCBiZWxvdy4gUGxlYXNlIHJlYWQgdGhlXFxuICAxMzpcXHRcXHQgIGZpbGUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS91ZnMucnN0XFx1MDAzZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0ICAgICAgICAgIFRoZSByZWNlbnRseSByZWxlYXNlZCBVRlMyIHZhcmlhbnQgKHVzZWQgaW4gRnJlZUJTRCA1LngpIGlzXFxuICAxNjpcXHQgICAgICAgICAgUkVBRC1PTkxZIHN1cHBvcnRlZC5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IG5vdCBuZWVkZWQgZm9yIGZsb3BwaWVzLCBzaW5jZSBhXFxuICAxOTpcXHRcXHQgIGdvb2QgcG9ydGFibGUgd2F5IHRvIHRyYW5zcG9ydCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYmV0d2VlbiB1bml4ZXNcXG4gIDIwOlxcdFxcdCAgKGFuZCBldmVuIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zKSBpcyBnaXZlbiBieSB0aGUgdGFyIHByb2dyYW0gKFxcXCJtYW5cXG4gIDIxOlxcdFxcdCAgdGFyXFxcIiBvciBwcmVmZXJhYmx5IFxcXCJpbmZvIHRhclxcXCIpLlxcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHQgIFdoZW4gYWNjZXNzaW5nIE5lWFRzdGVwIGZpbGVzLCB5b3UgbWF5IG5lZWQgdG8gY29udmVydCB0aGVtIGZyb20gdGhlXFxuICAyNDpcXHRcXHQgIE5lWFQgY2hhcmFjdGVyIHNldCB0byB0aGUgTGF0aW4xIGNoYXJhY3RlciBzZXQ7IHVzZSB0aGUgcHJvZ3JhbVxcbiAgMjU6XFx0XFx0ICByZWNvZGUgKFxcXCJpbmZvIHJlY29kZVxcXCIpIGZvciB0aGlzIHB1cnBvc2UuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGUgVUZTIGZpbGUgc3lzdGVtIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdWZzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIElmIHlvdSBoYXZlbid0IGhlYXJkIGFib3V0IGFsbCBvZiB0aGlzIGJlZm9yZSwgaXQncyBzYWZlIHRvIHNheSBOLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgVUZTX0ZTX1dSSVRFXFxuICAzMzpcXHRcXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gVUZTX0ZTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdHJ5IHdyaXRpbmcgdG8gVUZTIHBhcnRpdGlvbnMuIFRoaXMgaXNcXG4gIDM3OlxcdFxcdCAgZXhwZXJpbWVudGFsLCBzbyB5b3Ugc2hvdWxkIGJhY2sgdXAgeW91ciBVRlMgcGFydGl0aW9ucyBiZWZvcmVoYW5kLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgVUZTX0RFQlVHXFxuICA0MDpcXHRcXHRib29sIFxcXCJVRlMgZGVidWdnaW5nXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBVRlNfRlNcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIFVGUyBmaWxlc3lzdGVtLCBzYXlcXG4gIDQ0OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBfbWFueV8gYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG8gYmVcXG4gIDQ1OlxcdFxcdCAgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDY6MDMuNjc1MjIwMjMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMzU2MDA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gXHUwMDI2IENvcmUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVUZTX0ZTYCBhbmQgYFVGU19GU19XUklURWAuIFRoZXkgc2VlbSB0byBiZSB0aGUga2V5IHNldHRpbmdzIGZvciB0aGlzIHBhcnRpY3VsYXIgZmlsZXN5c3RlbS4gVGhlIHBhdGNoLCBzcGVjaWZpY2FsbHksIGlzIHRvdWNoaW5nIHRoZSBgdWZzX2VtcHR5X2RpcmAgZnVuY3Rpb24uIFRoYXQncyBteSBtYWluIHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBgVUZTYCBmaWxlc3lzdGVtIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuSSd2ZSBnb3QgYSBtZW50YWwgY2hlY2tsaXN0IG5vdy4gTGV0J3MgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHVmc19lbXB0eV9kaXJgLCBgdWZzX3JtZGlyYCwgYW5kIGB1ZnNfcmVuYW1lYC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBjZW50cmFsIHBpZWNlcyByZWxhdGVkIHRvIGRpcmVjdG9yeSBvcGVyYXRpb25zLCBhbmQgdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgZmlyc3Qgb25lLiBOb3csIGlzIGB1ZnNfZW1wdHlfZGlyYCBzdGF0aWM/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgaG93IGl0J3MgdXNlZC4gSXQncyBpbiBgZnMvdWZzL2Rpci5jYCwgd2hpY2ggbWFrZXMgaXQgKm5vdCogc3RhdGljLCBhbmQgbG9va3MgbGlrZSBpdCBpcyBleHBvcnRlZCBmb3IgdXNlIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc3ViZGlyZWN0b3J5LiBJIHNob3VsZCBjaGVjayB0aGF0IGZpbGUsIGBmcy91ZnMvZGlyLmNgLCB0byBiZSBzdXJlIG9mIHRoZSBzY29wZSBhbmQgdXNlIG9mIHRoYXQgY29yZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjA3Ljk4ODc4NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTA1NTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgdWZzX2VtcHR5X2RpclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy91ZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL2Rpci5jPTUzMz1pbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyKVxcbi0tXFxuZnMvdWZzL2Rpci5jLTU4MC0gKi9cXG5mcy91ZnMvZGlyLmM6NTgxOmludCB1ZnNfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqIGlub2RlKVxcbmZzL3Vmcy9kaXIuYy01ODIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjowOC4xMTc4NTU2NjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2Njc1MjM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0LiBJdCdzIG5vdCBzdGF0aWM7IHRoZSBuYXR1cmUgb2YgdGhlIG9wZXJhdGlvbnMgd2UncmUgY29uY2VybmVkIHdpdGggaXMgZHluYW1pYy4gQnV0LCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdWZzX3JtZGlyYCBhbmQgYHVmc19yZW5hbWVgLCB0aGV5J3JlIGRlZmluZWQgYXMgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYGZzL3Vmcy9uYW1laS5jYC4gVGhhdCdzIGltcG9ydGFudC4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVuZGVkIHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBVRlMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQgaW1wbGllcyBhIGNlcnRhaW4gbGV2ZWwgb2YgaW50ZXJuYWwtb25seSBhY2Nlc3MgYW5kIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gc3BlY2lmaWMgdG8gdGhhdCBtb2R1bGUuIFRoaXMgc3RhdGljIG5hdHVyZSBhZmZlY3RzIGhvdyBhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSB2aXNpYmxlIGFuZCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgb3ZlcmFsbCBmaWxlc3lzdGVtIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjExLjA4NDYxMjkzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA0MjM1NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWZzX3JtZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Vmcy9uYW1laS5jPTIwNz1zdGF0aWMgaW50IHVmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL3Vmcy9uYW1laS5jLTIyNi1cXG5mcy91ZnMvbmFtZWkuYzoyMjc6c3RhdGljIGludCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL3Vmcy9uYW1laS5jLTIyOC17XFxuLS1cXG5mcy91ZnMvbmFtZWkuYz0zMTk9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvdWZzL25hbWVpLmMtMzI1LVxcdC5ta2RpclxcdFxcdD0gdWZzX21rZGlyLFxcbmZzL3Vmcy9uYW1laS5jOjMyNjpcXHQucm1kaXJcXHRcXHQ9IHVmc19ybWRpcixcXG5mcy91ZnMvbmFtZWkuYy0zMjctXFx0Lm1rbm9kXFx0XFx0PSB1ZnNfbWtub2QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA3OjQ2OjExLjE3NTA1NzQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQxOTIxMDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBGb2N1cyBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEluaXRpYWxseSwgSSB3YXMgbGVhbmluZyBhd2F5IGZyb20gYHVmc19ybWRpcmAgYW5kIGB1ZnNfcmVuYW1lYCBiZWNhdXNlIHRoZXkncmUgZGVjbGFyZWQgc3RhdGljLCBhbmQgbXkgdW5kZXJzdGFuZGluZywgYmFzZWQgb24gdGhlIHByb21wdCwgaXMgdGhhdCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbmxpbmVkIGFuZCBkb24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCB3YWl0LCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBUaGVzZSBmdW5jdGlvbnMsIGB1ZnNfcm1kaXJgIGFuZCBgdWZzX3JlbmFtZWAsIGFyZSBhY3R1YWxseSBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVmc19kaXJfaW5vZGVfb3BlcmF0aW9uc2AuIFRoYXQgbWVhbnMgdGhleSAqYXJlKiBleHBvc2VkIGFzIEFQSSBlbnRyeXBvaW50cyB0byB0aGUgVkZTLCBhbmQgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQhIE9rYXksIGV4Y2VsbGVudC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgZm9jdXMgc3ltYm9scy4gVGhleSdyZSBjbGVhcmx5IGltcG9ydGFudCBlbnRyeXBvaW50cyBmb3IgZGlyZWN0b3J5IG1hbmlwdWxhdGlvbi4gQW5kIGB1ZnNfZW1wdHlfZGlyYCBpcyAqbm90KiBzdGF0aWMsIHNvIGl0J3MgZ29vZCB0b28uXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBaCB5ZXMsIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gR29vZCB0byBrZWVwIHRob3NlIGluIG1pbmQuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBidWcgd2l0aGluIGB1ZnNfZW1wdHlfZGlyYC4gSXQncyByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBlcnJvcnMgZnJvbSBgdWZzX2dldF9mb2xpb2AsIHdoaWNoIHBvdGVudGlhbGx5IHJlc3VsdHMgaW4gYW4gaW5maW5pdGUgbG9vcC4gU28sIHRoZSBmb2N1cyBoZXJlIHNob3VsZCBkZWZpbml0ZWx5IGJlIG9uIFVGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucy4gYHJtZGlyYCBhbmQgYHJlbmFtZWAgZmVlbCBtb3N0IHJlbGV2YW50LiBUaGV5J3JlIGFsbCBwYXJ0IG9mIHRoZSBzYW1lIG9wZXJhdGlvbmFsIGRvbWFpbi5cblxuT2theSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBiYWNrIGFuZCBleGFtaW5lIGB1ZnNfZW1wdHlfZGlyYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvZGlyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIEkndmUgZ290IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjoxNy4xMTY5ODI3NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL3Vmcy9kaXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0ICovXFxuIDU4MTpcXHRpbnQgdWZzX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcXG4gNTgyOlxcdHtcXG4gNTgzOlxcdFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gNTg0OlxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW87XFxuIDU4NTpcXHRcXHRjaGFyICprYWRkcjtcXG4gNTg2OlxcdFxcdHVuc2lnbmVkIGxvbmcgaSwgbnBhZ2VzID0gZGlyX3BhZ2VzKGlub2RlKTtcXG4gNTg3OlxcdFxcbiA1ODg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wYWdlczsgaSsrKSB7XFxuIDU4OTpcXHRcXHRcXHRzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqZGU7XFxuIDU5MDpcXHRcXG4gNTkxOlxcdFxcdFxcdGthZGRyID0gdWZzX2dldF9mb2xpbyhpbm9kZSwgaSwgXFx1MDAyNmZvbGlvKTtcXG4gNTkyOlxcdFxcdFxcdGlmIChJU19FUlIoa2FkZHIpKVxcbiA1OTM6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU5NDpcXHRcXG4gNTk1OlxcdFxcdFxcdGRlID0gKHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICopa2FkZHI7XFxuIDU5NjpcXHRcXHRcXHRrYWRkciArPSB1ZnNfbGFzdF9ieXRlKGlub2RlLCBpKSAtIFVGU19ESVJfUkVDX0xFTigxKTtcXG4gNTk3OlxcdFxcbiA1OTg6XFx0XFx0XFx0d2hpbGUgKChjaGFyICopZGUgXFx1MDAzYz0ga2FkZHIpIHtcXG4gNTk5OlxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9yZWNsZW4gPT0gMCkge1xcbiA2MDA6XFx0XFx0XFx0XFx0XFx0dWZzX2Vycm9yKGlub2RlLVxcdTAwM2VpX3NiLCBfX2Z1bmNfXyxcXG4gNjAxOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJ6ZXJvLWxlbmd0aCBkaXJlY3RvcnkgZW50cnk6IFxcXCJcXG4gNjAyOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJrYWRkcj0lcCwgZGU9JXBcXFxcblxcXCIsIGthZGRyLCBkZSk7XFxuIDYwMzpcXHRcXHRcXHRcXHRcXHRnb3RvIG5vdF9lbXB0eTtcXG4gNjA0OlxcdFxcdFxcdFxcdH1cXG4gNjA1OlxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9pbm8pIHtcXG4gNjA2OlxcdFxcdFxcdFxcdFxcdHUxNiBuYW1lbGVuPXVmc19nZXRfZGVfbmFtbGVuKHNiLCBkZSk7XFxuIDYwNzpcXHRcXHRcXHRcXHRcXHQvKiBjaGVjayBmb3IgLiBhbmQgLi4gKi9cXG4gNjA4OlxcdFxcdFxcdFxcdFxcdGlmIChkZS1cXHUwMDNlZF9uYW1lWzBdICE9ICcuJylcXG4gNjA5OlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gbm90X2VtcHR5O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNzo0NjoxNy4xMTcxOTczNzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjM1MjU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgcGF0Y2gsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIExpbmUgNTkzIGlzIHdoZXJlIHRoZSBjaGFuZ2UgaGFwcGVucyDigJMgYGNvbnRpbnVlO2AgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgcmV0dXJuIDA7YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBUaGUgY29kZSBpcyBwcm9iYWJseSBleGl0aW5nIGEgbG9vcCBvciBjb25kaXRpb25hbCBibG9jayBlYXJseSBpbiB0aGUgKnBvc2l0aXZlKiBzZW5zZSwgaW5zdGVhZCBvZiBza2lwcGluZyBvbiB0byB0aGUgbmV4dCBlbGVtZW50LiBUaGUgYHJldHVybiAwO2Agc2lnbmFscyBhIHN1Y2Nlc3NmdWwgZXhpdCBvciBjb21wbGV0aW9uIHRvIHRoZSBjYWxsZXIuIE5vdGhpbmcgcGFydGljdWxhcmx5IGNvbXBsZXggdGhlcmUgZnJvbSBhIGNvZGluZyBzdGFuZHBvaW50LlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGUgY29uZmlncyByZWxhdGVkIHRvIHRoaXMgYXJlIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYCwgc28gd2UncmUgZGVhbGluZyB3aXRoIHRoZSBVRlMgZmlsZSBzeXN0ZW0sIGFuZCBwb3RlbnRpYWxseSB3cml0ZSBvcGVyYXRpb25zIHdpdGhpbiBpdC4gVGhlIGludGVyZXN0aW5nIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXJlIGB1ZnNfZW1wdHlfZGlyYCwgYHVmc19ybWRpcmAsIGFuZCBgdWZzX3JlbmFtZWAuIEdpdmVuIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0LCBteSBndXQgc2F5cyB0aGlzIGByZXR1cm4gMDtgIGxpa2VseSByZWxhdGVzIHRvIGhvdyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCwgcG90ZW50aWFsbHkgd2hlbiB0aGV5IGVuY291bnRlciBhbiBlbXB0eSBkaXJlY3Rvcnkgb3IgbmVlZCB0byBoYW5kbGUgcmVuYW1lcy9yZW1vdmFscyBpbnZvbHZpbmcgZW1wdHkgZGlyZWN0b3JpZXMuIFRoZSBnb2FsIHdvdWxkIGJlIHRvIGF2b2lkIGFuIGVycm9yIGNvbmRpdGlvbiBpbiB0aG9zZSBjYXNlcy5cblxuQmFzZWQgb24gdGhpcyBsaW1pdGVkIGluZm9ybWF0aW9uLCBJJ20gY29uZmlkZW50IGluIHRoZSBwYXRjaCdzIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCdzIGEgY2xlYW4sIGxvY2FsaXplZCBjaGFuZ2UuIEknbGwgZG9jdW1lbnQgbXkgZmluZGluZ3MgYW5kIHNldCB0aGUgc3RhdHVzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzExLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDc6NDY6MjEuNTk5NTU2MzE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MTk1MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19lbXB0eV9kaXJcIixcbiAgICBcInVmc19ybWRpclwiLFxuICAgIFwidWZzX3JlbmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYHVmc19lbXB0eV9kaXJgIHdoZXJlIGEgZmFpbHVyZSB0byBnZXQgYSBmb2xpbyB3b3VsZCBwcmV2aW91c2x5IGJlIGlnbm9yZWQgKHZpYSBgY29udGludWVgKSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpbmZpbml0ZSBsb29wcyBvciBpbmNvcnJlY3QgZW1wdHkgZGlyZWN0b3J5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVRlMgZmlsZXN5c3RlbSdzIGRpcmVjdG9yeSBoYW5kbGluZyBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gVUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIGxpa2Ugcm1kaXIgYW5kIHJlbmFtZSB0aGF0IHJlbHkgb24gYHVmc19lbXB0eV9kaXJgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2VtcHR5X2RpclwiLFxuICAgIFwidWZzX3JtZGlyXCIsXG4gICAgXCJ1ZnNfcmVuYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgdWZzX2VtcHR5X2RpcmAgd2hlcmUgYSBmYWlsdXJlIHRvIGdldCBhIGZvbGlvIHdvdWxkIHByZXZpb3VzbHkgYmUgaWdub3JlZCAodmlhIGBjb250aW51ZWApLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluZmluaXRlIGxvb3BzIG9yIGluY29ycmVjdCBlbXB0eSBkaXJlY3RvcnkgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVGUyBmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IGhhbmRsaW5nIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBVRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgbGlrZSBybWRpciBhbmQgcmVuYW1lIHRoYXQgcmVseSBvbiBgdWZzX2VtcHR5X2RpcmAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh7hj8[1] Phase: Succeeded StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 07:46:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 07:46:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2] Phase: Succeeded StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 07:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 07:46:33 +0000 UTC FinishedAt: 2026-08-02 07:46:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3784791310/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 07:47:03 +0000 UTC FinishedAt: 2026-08-02 08:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 07:47:03 +0000 UTC FinishedAt: 2026-08-02 08:07:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*eccbf158-1382-4259-abf6-a4424f786879,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3784791310/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "aa84ab85-3b06-4c35-82fd-e1e7f438847d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2760939892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 07:47:03 +0000 UTC FinishedAt: 2026-08-02 08:07:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*eccbf158-1382-4259-abf6-a4424f786879,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3784791310/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "aa84ab85-3b06-4c35-82fd-e1e7f438847d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2760939892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 08:07:49 +0000 UTC FinishedAt: 2026-08-02 08:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 08:07:49 +0000 UTC FinishedAt: 2026-08-02 08:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 08:07:49 +0000 UTC FinishedAt: 2026-08-02 08:07:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 08:07:49 +0000 UTC FinishedAt: 2026-08-02 08:07:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3512933121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 08:07:59 +0000 UTC FinishedAt: 2026-08-02 08:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 08:07:59 +0000 UTC FinishedAt: 2026-08-02 08:09:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa84ab85-3b06-4c35-82fd-e1e7f438847d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2760939892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 08:10:03 +0000 UTC FinishedAt: 2026-08-02 08:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 08:10:03 +0000 UTC FinishedAt: 2026-08-02 08:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 08:10:03 +0000 UTC FinishedAt: 2026-08-02 08:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 08:10:03 +0000 UTC FinishedAt: 2026-08-02 08:31:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*eccbf158-1382-4259-abf6-a4424f786879,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3512933121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "96c5fc1c-62b5-4478-8ee2-e0ede1c34d08", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2691951501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 08:10:03 +0000 UTC FinishedAt: 2026-08-02 08:31:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*eccbf158-1382-4259-abf6-a4424f786879,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-3512933121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "96c5fc1c-62b5-4478-8ee2-e0ede1c34d08", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2691951501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 08:31:14 +0000 UTC FinishedAt: 2026-08-02 08:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 08:31:14 +0000 UTC FinishedAt: 2026-08-02 08:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 08:31:14 +0000 UTC FinishedAt: 2026-08-02 08:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 08:31:14 +0000 UTC FinishedAt: 2026-08-02 08:32:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*96c5fc1c-62b5-4478-8ee2-e0ede1c34d08,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2691951501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*aa84ab85-3b06-4c35-82fd-e1e7f438847d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*96c5fc1c-62b5-4478-8ee2-e0ede1c34d08,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2760939892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2691951501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 08:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 08:33:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-2511592086/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 08:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 08:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 08:33:06 +0000 UTC FinishedAt: 2026-08-02 08:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 08:33:16 +0000 UTC FinishedAt: 2026-08-02 09:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7hj8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_empty_dir","ufs_rmdir","ufs_rename"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0be43f25d0dd778b0185d67b8b9f4ab70e68154","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"daf26bd6-b2dd-436b-9a40-349e3984c784","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 08:33:16 +0000 UTC FinishedAt: 2026-08-02 09:20:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa84ab85-3b06-4c35-82fd-e1e7f438847d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*96c5fc1c-62b5-4478-8ee2-e0ede1c34d08,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2760939892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-build-action-2691951501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowh7hj8/series-workflowh7hj8-convert-artifact-2511592086/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}