Name: series-workflow5bk2f Phase: Succeeded StartedAt: 2026-08-27 12:59:48 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[0] Phase: Succeeded StartedAt: 2026-08-27 12:59:48 +0000 UTC FinishedAt: 2026-08-27 13:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 12:59:48 +0000 UTC FinishedAt: 2026-08-27 13:54:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "UNICODE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "UNICODE" ], "series_id": "0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_rmdir" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7VU5JQ09ERSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfcm1kaXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAsIGNoYW5naW5nIHRoZSBvcmRlciBvZiBgZF9pbnZhbGlkYXRlYCBhbmQgYGV4dDRfam91cm5hbF9zdG9wYCwgYW5kIGFkZGluZyBhIGNoZWNrIGZvciBgIXJldHZhbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZmlsZXN5c3RlbSBvcGVyYXRpb24gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBkZWFkbG9ja3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9uYW1laS5jXG5pbmRleCBhNjM4NmMxZDIzN2YxLi4yMzFhMjc0YjgxNGVjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9uYW1laS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L25hbWVpLmNcbkBAIC0zMjA5LDE5ICYjNDM7MzIwOSwyMCBAQCBzdGF0aWMgaW50IGV4dDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTtcbiBcdHJldHZhbCA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7XG4gXG4mIzQzO2VuZF9ybWRpcjpcbiYjNDM7XHRicmVsc2UoYmgpO1xuJiM0MztcdGlmIChoYW5kbGUpXG4mIzQzO1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuJiM0MztcbiBcdC8qIFZGUyBuZWdhdGl2ZSBkZW50cmllcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggRW5jb2RpbmcgYW5kXG4gXHQgKiBDYXNlLWluc2Vuc2l0aXZlbmVzcy4gRXZlbnR1YWxseSB3ZSYjMzk7bGwgd2FudCBhdm9pZFxuIFx0ICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlXG4gXHQgKiBuZWdhdGl2ZSBkZW50cmllcyBhdCBleHQ0X2xvb2t1cCgpLCB3aGVuIGl0IGlzIGJldHRlclxuIFx0ICogc3VwcG9ydGVkIGJ5IHRoZSBWRlMgZm9yIHRoZSBDSSBjYXNlLlxuIFx0ICovXG4tXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiYjNDM7XHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlM2UwY2Y0NzZmZGIxZjYzMDMzNmExYzJlZTZlZjJjNTMxZmZhOWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAxMzo0NTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbmFtZWkuYyBiL2ZzL2V4dDQvbmFtZWkuYwppbmRleCBhNjM4NmMxZDIzN2YxLi4yMzFhMjc0YjgxNGVjIDEwMDY0NAotLS0gYS9mcy9leHQ0L25hbWVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9uYW1laS5jCkBAIC0zMjA5LDE5ICYjNDM7MzIwOSwyMCBAQCBzdGF0aWMgaW50IGV4dDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7CiAJcmV0dmFsID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTsKIAomIzQzO2VuZF9ybWRpcjoKJiM0MzsJYnJlbHNlKGJoKTsKJiM0MzsJaWYgKGhhbmRsZSkKJiM0MzsJCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiYjNDM7CiAJLyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmQKIAkgKiBDYXNlLWluc2Vuc2l0aXZlbmVzcy4gRXZlbnR1YWxseSB3ZSYjMzk7bGwgd2FudCBhdm9pZAogCSAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZQogCSAqIG5lZ2F0aXZlIGRlbnRyaWVzIGF0IGV4dDRfbG9va3VwKCksIHdoZW4gaXQgaXMgYmV0dGVyCiAJICogc3VwcG9ydGVkIGJ5IHRoZSBWRlMgZm9yIHRoZSBDSSBjYXNlLgogCSAqLwotCWlmIChJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSAmYW1wOyZhbXA7IElTX0NBU0VGT0xERUQoZGlyKSkKJiM0MzsJaWYgKCFyZXR2YWwgJmFtcDsmYW1wOyBJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSAmYW1wOyZhbXA7IElTX0NBU0VGT0xERUQoZGlyKSkKIAkJZF9pbnZhbGlkYXRlKGRlbnRyeSk7CiAKLWVuZF9ybWRpcjoKLQlicmVsc2UoYmgpOwotCWlmIChoYW5kbGUpCi0JCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpbGUgU3lzdGVtIFBhdGNoOiBleHQ0X3JtZGlyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGNoYW5nZXMgdGhlIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiB3aXRoaW4gYGZzL2V4dDQvbmFtZWkuY2AuIEl0JiMzOTtzIGEgc21hbGwgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbi4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXkmIzM5O3ZlIG1vdmVkIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCBhbmQgdGhlIGFzc29jaWF0ZWQgY2xlYW51cCDigJMgYGJyZWxzZShiaCk7YCBhbmQgYGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSlgIOKAkyB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsLiBObyB3YWl0LCBhY3R1YWxseSwgdGhleSBtb3ZlZCBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIHRvICphZnRlciogdGhlIGNsZWFudXAgY29kZSEgQW5kIGFkZGVkIGEgYCFyZXR2YWxgIGNvbmRpdGlvbiB0byBpdC4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gYnkgbG9va2luZyBhdCB0aGUgZGlmZjogdGhleSYjMzk7dmUgbW92ZWQgdGhlIGBkX2ludmFsaWRhdGVgIGNhbGwgYWZ0ZXIgdGhlIGBicmVsc2VgIGFuZCBqb3VybmFsIHN0b3AsIGFuZCBpdCBub3cgb25seSBydW5zIGlmIGAhcmV0dmFsYC4gUmlnaHQsIGdvdCBpdC4KClNvLCB0aGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBjcml0aWNhbCBiaXQgaXMgdGhhdCBgZF9pbnZhbGlkYXRlYCBpcyBub3cgKmRlcGVuZGVudCogb24gYHJldHZhbGAgKHN1Y2Nlc3Mgb2YgdGhlIHJtZGlyKSBhbmQgaGFwcGVucyAqYWZ0ZXIqIHRoZSBqb3VybmFsIGlzIHN0b3BwZWQuIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBmb3IgYW4gYWN0aXZlIGpvdXJuYWwgaGFuZGxlIHdoZW4gdGhlIGBkX2ludmFsaWRhdGVgIHdhcyBjYWxsZWQsIG9yIHdoZW4gdGhlIHJtZGlyIGhhZCBmYWlsZWQuIFRoaXMgbGlrZWx5IGZpeGVzIGEgYnVnLCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGpvdXJuYWwgY29ycnVwdGlvbiBvciBhIHJhY2UgY29uZGl0aW9uLiBNYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tbWVudCBhYm91dCBuZWdhdGl2ZSBkZW50cmllcyBhbmQgZW5jb2RpbmcvY2FzZS1pbnNlbnNpdGl2aXR5LgoKTm93LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc3BlY2lhbGlzdCwgdGhpcyBpcyBzb21ldGhpbmcgSSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gSXQgdG91Y2hlcyBhIGNvcmUgZmlsZXN5c3RlbSBvcGVyYXRpb24gKGBleHQ0X3JtZGlyYCksIGFuZCB0aGVzZSB0eXBlcyBvZiBjaGFuZ2VzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBleHBvc2luZyBzdWJ0bGUgYnVncy4gSSBzaG91bGQgYWJzb2x1dGVseSBmb2N1cyBvbiB0aGUgYGV4dDRfcm1kaXJgIHN5bWJvbC4gVGhlIGBDT05GSUdfVU5JQ09ERWAgaXMgYWxzbyBjaGVja2VkIHNvIGl0IGhhcyB0byBiZSBlbmFibGVkLiBJIHRoaW5rIEkgd2lsbCBmb2N1cyBvbiBgRVhUNF9GU2AgYW5kIGBVTklDT0RFYCBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVTklDT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3VuaWNvZGUvS2NvbmZpZy00LSNcbmZzL3VuaWNvZGUvS2NvbmZpZzo1OmNvbmZpZyBVTklDT0RFXG5mcy91bmljb2RlL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1VURi04IG5vcm1hbGl6YXRpb24gYW5kIGNhc2Vmb2xkaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy91bmljb2RlL0tjb25maWctMTItXG5mcy91bmljb2RlL0tjb25maWc6MTM6Y29uZmlnIFVOSUNPREVfTk9STUFMSVpBVElPTl9LVU5JVF9URVNUXG5mcy91bmljb2RlL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IFVURi04IG5vcm1hbGl6YXRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRmlsZSBTeXN0ZW0gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgaW50byBzb21ldGhpbmcsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBvdmVybG9vayBgRVhUNF9GU2AuIFdlJiMzOTt2ZSBwcm9iYWJseSBsb29rZWQgYXQgb3RoZXIgZmlsZSBzeXN0ZW1zLCBvciBwZXJoYXBzIHRoaXMgaXMgcGFydCBvZiBhIGxhcmdlciBhcmNoaXRlY3R1cmUgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGNvbnNpZGVyZWQgdGhpcyBvbmUgdG9vLiBJJiMzOTttIGdvaW5nIHRvIHJ1biBkb3duIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBpdHMgY2hhcmFjdGVyaXN0aWNzIGluIHRoZSBjb250ZXh0IG9mIG91ciByZXF1aXJlbWVudHMuIFRoaW5ncyBsaWtlIGpvdXJuYWxpbmcgYmVoYXZpb3IsIHBlcmZvcm1hbmNlIG9uIGRpZmZlcmVudCB3b3JrbG9hZHMsIHN1cHBvcnQgZm9yIGFkdmFuY2VkIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhbnkga25vd24gbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGUgY3VycmVudCBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBjb21wYXJlIGl0IGluIGRldGFpbCB0byB0aGUgb3RoZXIgY29udGVuZGVycyB0byBlbnN1cmUgd2UgaGF2ZSB0aGUgb3B0aW1hbCBmaWxlIHN5c3RlbSBmb3IgdGhlIGN1cnJlbnQgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyMwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSBmb3IgYGV4dDRfcm1kaXJgKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgZXh0NF9ybWRpcmAgZnVuY3Rpb24sIGFuZCB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9ucyBJJiMzOTttIHNlZWluZyBhcmUgYEVYVDRfRlNgIGFuZCBgVU5JQ09ERWAuIE1ha2VzIHNlbnNlLCBzdGFuZGFyZCBzdHVmZiBmb3IgRVhUNC4gQnV0LCBJIGFsd2F5cyBsaWtlIHRvIGJlIHRob3JvdWdoOyBsZXQmIzM5O3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IGxpbmtlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCBpdHMgYmVoYXZpb3IuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElTX0NBU0VGT0xERUQoZGlyKWAuIEl0JiMzOTtzIGEgY29tbW9uIGZhY3RvciBpbiB2YXJpb3VzIEZTIGZ1bmN0aW9uYWxpdHkuIElzIHRoZXJlIGFub3RoZXIgY29uZmlnIEkgbWlnaHQgaGF2ZSBtaXNzZWQgdGhhdCBpbmZsdWVuY2VzIHRoYXQgcGFydGljdWxhciBtYWNybz8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGl0JiMzOTtzIGRlZmluaXRpb24sIGp1c3QgdG8gYmUgc3VyZS4uLiBObywgaXQmIzM5O3MganVzdCBhIG1hY3JvLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBnb29kIGZvciBub3csIGJ1dCBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyBhcyBJIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIElTX0NBU0VGT0xERUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mcy5oPTIwOTA9ZXh0ZXJuIGxvZmZfdCB2ZnNfZGVkdXBlX2ZpbGVfcmFuZ2Vfb25lKHN0cnVjdCBmaWxlICpzcmNfZmlsZSwgbG9mZl90IHNyY19wb3MsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTIxNjktI2RlZmluZSBJU19FTkNSWVBURUQoaW5vZGUpXHQoKGlub2RlKS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBTX0VOQ1JZUFRFRClcbmluY2x1ZGUvbGludXgvZnMuaDoyMTcwOiNkZWZpbmUgSVNfQ0FTRUZPTERFRChpbm9kZSlcdCgoaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IFNfQ0FTRUZPTEQpXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjE3MS0jZGVmaW5lIElTX1ZFUklUWShpbm9kZSlcdCgoaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IFNfVkVSSVRZKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTYKCQkJCQkJCW91dHB1dDogMTE1CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipTdHJhdGVnaWMgQXBwcm9hY2ggZm9yIFRhcmdldGVkIEZ1enppbmcqKgoKUmlnaHQsIHNvIHRoZSBVbmljb2RlIHN1cHBvcnQgc2VlbXMgYWRlcXVhdGUsIHRoYXQmIzM5O3MgZ29vZC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgdGVsbHMgdGhlIGZ1enplciB0aGF0IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyB0aW1lIG9uLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiBzcGVjaWZpY2FsbHkuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFwcHJvYWNoLiBUbyBlbnN1cmUgdGhlIGNvbnRleHQgaXMgY29ycmVjdGx5IHNldCwgSSBuZWVkIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgRVhUNF9GU2AgaXMgZnVuZGFtZW50YWwgZm9yIHRoaXMsIG5hdHVyYWxseS4gQW5kLCBhcyBwcmV2aW91c2x5IGNvbmZpcm1lZCwgSSBuZWVkIHRvIGVuYWJsZSBgVU5JQ09ERWAgc3VwcG9ydC4gV2l0aCB0aGVzZSBzZXR0aW5ncywgSSYjMzk7bSBjb25maWRlbnQgSSBjYW4gZWxpY2l0IGEgZ29vZCBzZXQgb2YgdGVzdCBjYXNlcyB0byBleHBvc2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWUzZTBjZjQ3NmZkYjFmNjMwMzM2YTFjMmVlNmVmMmM1MzFmZmE5ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDEzOjQ1OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9uYW1laS5jCmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L25hbWVpLmMKQEAgLTMyMDksMTkgJiM0MzszMjA5LDIwIEBAIHN0YXRpYyBpbnQgZXh0NF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCWV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTsKIAlyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpOwogCiYjNDM7ZW5kX3JtZGlyOgomIzQzOwlicmVsc2UoYmgpOwomIzQzOwlpZiAoaGFuZGxlKQomIzQzOwkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKJiM0MzsKIAkvKiBWRlMgbmVnYXRpdmUgZGVudHJpZXMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEVuY29kaW5nIGFuZAogCSAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJiMzOTtsbCB3YW50IGF2b2lkCiAJICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlCiAJICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXIKIAkgKiBzdXBwb3J0ZWQgYnkgdGhlIFZGUyBmb3IgdGhlIENJIGNhc2UuCiAJICovCi0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpICZhbXA7JmFtcDsgSVNfQ0FTRUZPTERFRChkaXIpKQomIzQzOwlpZiAoIXJldHZhbCAmYW1wOyZhbXA7IElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpICZhbXA7JmFtcDsgSVNfQ0FTRUZPTERFRChkaXIpKQogCQlkX2ludmFsaWRhdGUoZGVudHJ5KTsKIAotZW5kX3JtZGlyOgotCWJyZWxzZShiaCk7Ci0JaWYgKGhhbmRsZSkKLQkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDgzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBSZWFzb25pbmcgZm9yIGV4dDRfcm1kaXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCB0byBgZXh0NF9ybWRpcmAgaW4gYGZzL2V4dDQvbmFtZWkuY2AgaXMgc2hpZnRpbmcgdGhpbmdzIGFyb3VuZCwgc3BlY2lmaWNhbGx5IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGNvbmNlcm5pbmcgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBhbmQgdGhlIGNsZWFudXAgY29kZS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGp1c3QgbW92aW5nIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCwgYnV0IGl0JiMzOTtzIG1vcmUgbnVhbmNlZCB0aGFuIHRoYXQuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGlzOiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsIGlzIG5vdyAqYWZ0ZXIqIHRoZSBgYnJlbHNlKGJoKTsgZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtgIGNsZWFudXAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZWQgb25seSBpZiBgcmV0dmFsYCBpcyB6ZXJvIChpbmRpY2F0aW5nIHN1Y2Nlc3MpLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUsIGRlYWRsb2NrLCBvciBzb21ldGhpbmcgc2ltaWxhciByZWxhdGVkIHRvIGpvdXJuYWwgc3RvcHBpbmcgYW5kIGRlbnRyeSBpbnZhbGlkYXRpb24uIE9yLCBtYXliZSwgaXQmIzM5O3MganVzdCBtZWFudCB0byBhdm9pZCBpbnZhbGlkYXRpbmcgdGhlIGRlbnRyeSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBwcm9jZXNzIChgcmV0dmFsYCBub24temVybykuIFRoZSBhZGRlZCBgIXJldHZhbGAgY29uZGl0aW9uIGlzIGtleS4KCk5vdywgbXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKiAgICoqYHJldHZhbGAqKjogVGhpcyBpcyBhbiBpbnRlZ2VyLCBzbyBpdCYjMzk7cyBpbml0aWFsaXplZCBiZWZvcmUgdXNlLgoqICAgKipgZGlyYCwgYGRlbnRyeWAsIGBiaGAsIGBoYW5kbGVgKio6IFRoZXNlIGFyZSBwb2ludGVycy4gVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIG1hbmlwdWxhdGlvbiB0aGF0IHdvdWxkIGNhdXNlIHRoZW0gdG8gYmVjb21lIHVuaW5pdGlhbGl6ZWQuIFRoZXkmIzM5O3JlIGFscmVhZHkgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuIFRoZSBjb2RlIGlzIG9ubHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbi4KClNpbmNlIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIG9ubHkgaW52b2x2ZSByZW9yZGVyaW5nIGV4aXN0aW5nIGluaXRpYWxpemVkIHZhcmlhYmxlcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLCByZXNwZWN0aXZlbHkuIEtNU0FOJiMzOTtzIHB1cnBvc2UgaXMgbm90IG5lY2Vzc2FyeSBoZXJlLgoKVGhlcmVmb3JlLCBteSBLTVNBTiByZWFzb25pbmcgaXMgYXMgZm9sbG93czogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo0NTo1Mi4zOTMyODM4NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjczMzA2OTQ1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiVU5JQ09ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfcm1kaXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo0NTo1Mi4zOTMyOTAwMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzQ5MTk0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDEzOjQ1OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbmFtZWkuYyBiL2ZzL2V4dDQvbmFtZWkuY1xcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9uYW1laS5jXFxuKysrIGIvZnMvZXh0NC9uYW1laS5jXFxuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTtcXG4gXFx0cmV0dmFsID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTtcXG4gXFxuK2VuZF9ybWRpcjpcXG4rXFx0YnJlbHNlKGJoKTtcXG4rXFx0aWYgKGhhbmRsZSlcXG4rXFx0XFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcXG4rXFxuIFxcdC8qIFZGUyBuZWdhdGl2ZSBkZW50cmllcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggRW5jb2RpbmcgYW5kXFxuIFxcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcXG4gXFx0ICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlXFxuIFxcdCAqIG5lZ2F0aXZlIGRlbnRyaWVzIGF0IGV4dDRfbG9va3VwKCksIHdoZW4gaXQgaXMgYmV0dGVyXFxuIFxcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cXG4gXFx0ICovXFxuLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSBcXHUwMDI2XFx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXFxuK1xcdGlmICghcmV0dmFsIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFxcdTAwMjZcXHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcXG4gXFx0XFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XFxuIFxcbi1lbmRfcm1kaXI6XFxuLVxcdGJyZWxzZShiaCk7XFxuLVxcdGlmIChoYW5kbGUpXFxuLVxcdFxcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjQ1OjUzLjg2ODkxNzUxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ5MTY0NzI5MTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJVTklDT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9ybWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9mcy9leHQ0L25hbWVpLmNcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L25hbWVpLmNcbisrKyBiL2ZzL2V4dDQvbmFtZWkuY1xuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7XG4gXHRyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpO1xuIFxuK2VuZF9ybWRpcjpcbitcdGJyZWxzZShiaCk7XG4rXHRpZiAoaGFuZGxlKVxuK1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1xuIFx0LyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmRcbiBcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcbiBcdCAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZVxuIFx0ICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXJcbiBcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cbiBcdCAqL1xuLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFx1MDAyNlx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXG4rXHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjQ1OjUzLjg2ODkxOTE2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzM1Njg1ODYwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaWxlIFN5c3RlbSBQYXRjaDogZXh0NF9ybWRpciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgY2hhbmdlcyB0aGUgYGV4dDRfcm1kaXJgIGZ1bmN0aW9uIHdpdGhpbiBgZnMvZXh0NC9uYW1laS5jYC4gSXQncyBhIHNtYWxsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24uIE15IGZpcnN0IGltcHJlc3Npb24gaXMgdGhhdCB0aGV5J3ZlIG1vdmVkIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCBhbmQgdGhlIGFzc29jaWF0ZWQgY2xlYW51cCDigJMgYGJyZWxzZShiaCk7YCBhbmQgYGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSlgIOKAkyB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsLiBObyB3YWl0LCBhY3R1YWxseSwgdGhleSBtb3ZlZCBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIHRvICphZnRlciogdGhlIGNsZWFudXAgY29kZSEgQW5kIGFkZGVkIGEgYCFyZXR2YWxgIGNvbmRpdGlvbiB0byBpdC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIGJ5IGxvb2tpbmcgYXQgdGhlIGRpZmY6IHRoZXkndmUgbW92ZWQgdGhlIGBkX2ludmFsaWRhdGVgIGNhbGwgYWZ0ZXIgdGhlIGBicmVsc2VgIGFuZCBqb3VybmFsIHN0b3AsIGFuZCBpdCBub3cgb25seSBydW5zIGlmIGAhcmV0dmFsYC4gUmlnaHQsIGdvdCBpdC5cblxuU28sIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNyaXRpY2FsIGJpdCBpcyB0aGF0IGBkX2ludmFsaWRhdGVgIGlzIG5vdyAqZGVwZW5kZW50KiBvbiBgcmV0dmFsYCAoc3VjY2VzcyBvZiB0aGUgcm1kaXIpIGFuZCBoYXBwZW5zICphZnRlciogdGhlIGpvdXJuYWwgaXMgc3RvcHBlZC4gUHJldmlvdXNseSwgdGhlcmUgd2FzIGEgcG90ZW50aWFsIGZvciBhbiBhY3RpdmUgam91cm5hbCBoYW5kbGUgd2hlbiB0aGUgYGRfaW52YWxpZGF0ZWAgd2FzIGNhbGxlZCwgb3Igd2hlbiB0aGUgcm1kaXIgaGFkIGZhaWxlZC4gVGhpcyBsaWtlbHkgZml4ZXMgYSBidWcsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gam91cm5hbCBjb3JydXB0aW9uIG9yIGEgcmFjZSBjb25kaXRpb24uIE1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjb21tZW50IGFib3V0IG5lZ2F0aXZlIGRlbnRyaWVzIGFuZCBlbmNvZGluZy9jYXNlLWluc2Vuc2l0aXZpdHkuXG5cbk5vdywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNwZWNpYWxpc3QsIHRoaXMgaXMgc29tZXRoaW5nIEkgc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcuIEl0IHRvdWNoZXMgYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIChgZXh0NF9ybWRpcmApLCBhbmQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MuIEkgc2hvdWxkIGFic29sdXRlbHkgZm9jdXMgb24gdGhlIGBleHQ0X3JtZGlyYCBzeW1ib2wuIFRoZSBgQ09ORklHX1VOSUNPREVgIGlzIGFsc28gY2hlY2tlZCBzbyBpdCBoYXMgdG8gYmUgZW5hYmxlZC4gSSB0aGluayBJIHdpbGwgZm9jdXMgb24gYEVYVDRfRlNgIGFuZCBgVU5JQ09ERWAgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjExLjIyNTc4MDYxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1NzY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVU5JQ09ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdW5pY29kZS9LY29uZmlnLTQtI1xcbmZzL3VuaWNvZGUvS2NvbmZpZzo1OmNvbmZpZyBVTklDT0RFXFxuZnMvdW5pY29kZS9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlVURi04IG5vcm1hbGl6YXRpb24gYW5kIGNhc2Vmb2xkaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy91bmljb2RlL0tjb25maWctMTItXFxuZnMvdW5pY29kZS9LY29uZmlnOjEzOmNvbmZpZyBVTklDT0RFX05PUk1BTElaQVRJT05fS1VOSVRfVEVTVFxcbmZzL3VuaWNvZGUvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBVVEYtOCBub3JtYWxpemF0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjExLjI5Njg0MTg5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODQ0NjMzMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRmlsZSBTeXN0ZW0gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGludG8gc29tZXRoaW5nLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBvdmVybG9vayBgRVhUNF9GU2AuIFdlJ3ZlIHByb2JhYmx5IGxvb2tlZCBhdCBvdGhlciBmaWxlIHN5c3RlbXMsIG9yIHBlcmhhcHMgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGFyY2hpdGVjdHVyZSBkZWNpc2lvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSd2ZSBjb25zaWRlcmVkIHRoaXMgb25lIHRvby4gSSdtIGdvaW5nIHRvIHJ1biBkb3duIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBpdHMgY2hhcmFjdGVyaXN0aWNzIGluIHRoZSBjb250ZXh0IG9mIG91ciByZXF1aXJlbWVudHMuIFRoaW5ncyBsaWtlIGpvdXJuYWxpbmcgYmVoYXZpb3IsIHBlcmZvcm1hbmNlIG9uIGRpZmZlcmVudCB3b3JrbG9hZHMsIHN1cHBvcnQgZm9yIGFkdmFuY2VkIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhbnkga25vd24gbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGUgY3VycmVudCBzdGFjay4gSSdsbCBuZWVkIHRvIGNvbXBhcmUgaXQgaW4gZGV0YWlsIHRvIHRoZSBvdGhlciBjb250ZW5kZXJzIHRvIGVuc3VyZSB3ZSBoYXZlIHRoZSBvcHRpbWFsIGZpbGUgc3lzdGVtIGZvciB0aGUgY3VycmVudCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTE6NTAuMTQxNDc3OTM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjU2MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjUwLjE5MDczOTcwN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0NTUxODM3MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIGBleHQ0X3JtZGlyYCoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiwgYW5kIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb25zIEknbSBzZWVpbmcgYXJlIGBFWFQ0X0ZTYCBhbmQgYFVOSUNPREVgLiBNYWtlcyBzZW5zZSwgc3RhbmRhcmQgc3R1ZmYgZm9yIEVYVDQuIEJ1dCwgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaDsgbGV0J3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBzdWJ0bHkgbGlua2VkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWZmZWN0IGl0cyBiZWhhdmlvci5cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgYElTX0NBU0VGT0xERUQoZGlyKWAuIEl0J3MgYSBjb21tb24gZmFjdG9yIGluIHZhcmlvdXMgRlMgZnVuY3Rpb25hbGl0eS4gSXMgdGhlcmUgYW5vdGhlciBjb25maWcgSSBtaWdodCBoYXZlIG1pc3NlZCB0aGF0IGluZmx1ZW5jZXMgdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBMZXQncyB0YWtlIGEgbG9vayBhdCBpdCdzIGRlZmluaXRpb24sIGp1c3QgdG8gYmUgc3VyZS4uLiBObywgaXQncyBqdXN0IGEgbWFjcm8uIExvb2tzIGxpa2Ugd2UncmUgZ29vZCBmb3Igbm93LCBidXQgSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyBhcyBJIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1MjoxNC43NDI1NzkyOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MTY2NDU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgSVNfQ0FTRUZPTERFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9mcy5oPTIwOTA9ZXh0ZXJuIGxvZmZfdCB2ZnNfZGVkdXBlX2ZpbGVfcmFuZ2Vfb25lKHN0cnVjdCBmaWxlICpzcmNfZmlsZSwgbG9mZl90IHNyY19wb3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjE2OS0jZGVmaW5lIElTX0VOQ1JZUFRFRChpbm9kZSlcXHQoKGlub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IFNfRU5DUllQVEVEKVxcbmluY2x1ZGUvbGludXgvZnMuaDoyMTcwOiNkZWZpbmUgSVNfQ0FTRUZPTERFRChpbm9kZSlcXHQoKGlub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IFNfQ0FTRUZPTEQpXFxuaW5jbHVkZS9saW51eC9mcy5oLTIxNzEtI2RlZmluZSBJU19WRVJJVFkoaW5vZGUpXFx0KChpbm9kZSktXFx1MDAzZWlfZmxhZ3MgXFx1MDAyNiBTX1ZFUklUWSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTI6MTYuNDA0MjQ4MTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MDMyNDIwMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKlN0cmF0ZWdpYyBBcHByb2FjaCBmb3IgVGFyZ2V0ZWQgRnV6emluZyoqXG5cblJpZ2h0LCBzbyB0aGUgVW5pY29kZSBzdXBwb3J0IHNlZW1zIGFkZXF1YXRlLCB0aGF0J3MgZ29vZC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgdGVsbHMgdGhlIGZ1enplciB0aGF0IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyB0aW1lIG9uLiBJJ20gZ29pbmcgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfcm1kaXJgIGZ1bmN0aW9uIHNwZWNpZmljYWxseS4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYXBwcm9hY2guIFRvIGVuc3VyZSB0aGUgY29udGV4dCBpcyBjb3JyZWN0bHkgc2V0LCBJIG5lZWQgdG8gZW5hYmxlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIGBFWFQ0X0ZTYCBpcyBmdW5kYW1lbnRhbCBmb3IgdGhpcywgbmF0dXJhbGx5LiBBbmQsIGFzIHByZXZpb3VzbHkgY29uZmlybWVkLCBJIG5lZWQgdG8gZW5hYmxlIGBVTklDT0RFYCBzdXBwb3J0LiBXaXRoIHRoZXNlIHNldHRpbmdzLCBJJ20gY29uZmlkZW50IEkgY2FuIGVsaWNpdCBhIGdvb2Qgc2V0IG9mIHRlc3QgY2FzZXMgdG8gZXhwb3NlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoaXMgc3BlY2lmaWMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5NiwiT3V0cHV0VG9rZW5zIjoxMTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1NDowNS40MzY2NzE2NDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUzNDIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiVU5JQ09ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfcm1kaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJVTklDT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9ybWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1NDowNS41MTYyMTIzMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjA3NzU3MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTQ6MDUuNTE2Njc0Mzc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0MjA3MjkxNDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9mcy9leHQ0L25hbWVpLmNcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L25hbWVpLmNcbisrKyBiL2ZzL2V4dDQvbmFtZWkuY1xuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7XG4gXHRyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpO1xuIFxuK2VuZF9ybWRpcjpcbitcdGJyZWxzZShiaCk7XG4rXHRpZiAoaGFuZGxlKVxuK1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1xuIFx0LyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmRcbiBcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcbiBcdCAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZVxuIFx0ICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXJcbiBcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cbiBcdCAqL1xuLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFx1MDAyNlx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXG4rXHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjU0OjA1LjUxNjY3NTIxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNzI2Nzc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBSZWFzb25pbmcgZm9yIGV4dDRfcm1kaXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHRvIGBleHQ0X3JtZGlyYCBpbiBgZnMvZXh0NC9uYW1laS5jYCBpcyBzaGlmdGluZyB0aGluZ3MgYXJvdW5kLCBzcGVjaWZpY2FsbHkgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgY29uY2VybmluZyBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIGFuZCB0aGUgY2xlYW51cCBjb2RlLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMganVzdCBtb3ZpbmcgdGhlIGBlbmRfcm1kaXJgIGxhYmVsLCBidXQgaXQncyBtb3JlIG51YW5jZWQgdGhhbiB0aGF0LiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogdGhlIGBkX2ludmFsaWRhdGUoZGVudHJ5KWAgY2FsbCBpcyBub3cgKmFmdGVyKiB0aGUgYGJyZWxzZShiaCk7IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7YCBjbGVhbnVwIGFuZCBpcyBjb25kaXRpb25hbGx5IGV4ZWN1dGVkIG9ubHkgaWYgYHJldHZhbGAgaXMgemVybyAoaW5kaWNhdGluZyBzdWNjZXNzKS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUsIGRlYWRsb2NrLCBvciBzb21ldGhpbmcgc2ltaWxhciByZWxhdGVkIHRvIGpvdXJuYWwgc3RvcHBpbmcgYW5kIGRlbnRyeSBpbnZhbGlkYXRpb24uIE9yLCBtYXliZSwgaXQncyBqdXN0IG1lYW50IHRvIGF2b2lkIGludmFsaWRhdGluZyB0aGUgZGVudHJ5IGlmIHRoZXJlIHdhcyBhbiBlcnJvciBkdXJpbmcgdGhlIHByb2Nlc3MgKGByZXR2YWxgIG5vbi16ZXJvKS4gVGhlIGFkZGVkIGAhcmV0dmFsYCBjb25kaXRpb24gaXMga2V5LlxuXG5Ob3csIG15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duOlxuXG4qICAgKipgcmV0dmFsYCoqOiBUaGlzIGlzIGFuIGludGVnZXIsIHNvIGl0J3MgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS5cbiogICAqKmBkaXJgLCBgZGVudHJ5YCwgYGJoYCwgYGhhbmRsZWAqKjogVGhlc2UgYXJlIHBvaW50ZXJzLiBUaGUgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucyBvciBtYW5pcHVsYXRpb24gdGhhdCB3b3VsZCBjYXVzZSB0aGVtIHRvIGJlY29tZSB1bmluaXRpYWxpemVkLiBUaGV5J3JlIGFscmVhZHkgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuIFRoZSBjb2RlIGlzIG9ubHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbi5cblxuU2luY2UgdGhlIHBhdGNoJ3MgY2hhbmdlcyBvbmx5IGludm9sdmUgcmVvcmRlcmluZyBleGlzdGluZyBpbml0aWFsaXplZCB2YXJpYWJsZXMsIEknbSBjb25maWRlbnQgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAsIHJlc3BlY3RpdmVseS4gS01TQU4ncyBwdXJwb3NlIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS5cblxuVGhlcmVmb3JlLCBteSBLTVNBTiByZWFzb25pbmcgaXMgYXMgZm9sbG93czogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU4LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjU0OjM5LjcyMzk0Nzk2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAgYnkgbW92aW5nIHRoZSBgZF9pbnZhbGlkYXRlKClgIGNhbGwgYWZ0ZXIgYGV4dDRfam91cm5hbF9zdG9wKClgIGFuZCBgYnJlbHNlKClgLCBhbmQgYWRkcyBhIGNoZWNrIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZGVudHJ5IGlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGAhcmV0dmFsYCkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gVkZTIGRlbnRyeSBtYW5hZ2VtZW50IGFuZCBqb3VybmFsIGhhbmRsaW5nLCBsaWtlbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlLCBsb2NraW5nIGlzc3VlLCBvciBpbmNvcnJlY3QgaW52YWxpZGF0aW9uIG9uIGVycm9yIHBhdGhzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAgYnkgbW92aW5nIHRoZSBgZF9pbnZhbGlkYXRlKClgIGNhbGwgYWZ0ZXIgYGV4dDRfam91cm5hbF9zdG9wKClgIGFuZCBgYnJlbHNlKClgLCBhbmQgYWRkcyBhIGNoZWNrIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZGVudHJ5IGlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGAhcmV0dmFsYCkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gVkZTIGRlbnRyeSBtYW5hZ2VtZW50IGFuZCBqb3VybmFsIGhhbmRsaW5nLCBsaWtlbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlLCBsb2NraW5nIGlzc3VlLCBvciBpbmNvcnJlY3QgaW52YWxpZGF0aW9uIG9uIGVycm9yIHBhdGhzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5bk2f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 12:59:48 +0000 UTC FinishedAt: 2026-08-27 13:54:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "UNICODE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "UNICODE" ], "series_id": "0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_rmdir" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7VU5JQ09ERSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfcm1kaXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAsIGNoYW5naW5nIHRoZSBvcmRlciBvZiBgZF9pbnZhbGlkYXRlYCBhbmQgYGV4dDRfam91cm5hbF9zdG9wYCwgYW5kIGFkZGluZyBhIGNoZWNrIGZvciBgIXJldHZhbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZmlsZXN5c3RlbSBvcGVyYXRpb24gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBkZWFkbG9ja3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9uYW1laS5jXG5pbmRleCBhNjM4NmMxZDIzN2YxLi4yMzFhMjc0YjgxNGVjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9uYW1laS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L25hbWVpLmNcbkBAIC0zMjA5LDE5ICYjNDM7MzIwOSwyMCBAQCBzdGF0aWMgaW50IGV4dDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTtcbiBcdHJldHZhbCA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7XG4gXG4mIzQzO2VuZF9ybWRpcjpcbiYjNDM7XHRicmVsc2UoYmgpO1xuJiM0MztcdGlmIChoYW5kbGUpXG4mIzQzO1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuJiM0MztcbiBcdC8qIFZGUyBuZWdhdGl2ZSBkZW50cmllcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggRW5jb2RpbmcgYW5kXG4gXHQgKiBDYXNlLWluc2Vuc2l0aXZlbmVzcy4gRXZlbnR1YWxseSB3ZSYjMzk7bGwgd2FudCBhdm9pZFxuIFx0ICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlXG4gXHQgKiBuZWdhdGl2ZSBkZW50cmllcyBhdCBleHQ0X2xvb2t1cCgpLCB3aGVuIGl0IGlzIGJldHRlclxuIFx0ICogc3VwcG9ydGVkIGJ5IHRoZSBWRlMgZm9yIHRoZSBDSSBjYXNlLlxuIFx0ICovXG4tXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiYjNDM7XHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlM2UwY2Y0NzZmZGIxZjYzMDMzNmExYzJlZTZlZjJjNTMxZmZhOWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAxMzo0NTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbmFtZWkuYyBiL2ZzL2V4dDQvbmFtZWkuYwppbmRleCBhNjM4NmMxZDIzN2YxLi4yMzFhMjc0YjgxNGVjIDEwMDY0NAotLS0gYS9mcy9leHQ0L25hbWVpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9uYW1laS5jCkBAIC0zMjA5LDE5ICYjNDM7MzIwOSwyMCBAQCBzdGF0aWMgaW50IGV4dDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7CiAJcmV0dmFsID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTsKIAomIzQzO2VuZF9ybWRpcjoKJiM0MzsJYnJlbHNlKGJoKTsKJiM0MzsJaWYgKGhhbmRsZSkKJiM0MzsJCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiYjNDM7CiAJLyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmQKIAkgKiBDYXNlLWluc2Vuc2l0aXZlbmVzcy4gRXZlbnR1YWxseSB3ZSYjMzk7bGwgd2FudCBhdm9pZAogCSAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZQogCSAqIG5lZ2F0aXZlIGRlbnRyaWVzIGF0IGV4dDRfbG9va3VwKCksIHdoZW4gaXQgaXMgYmV0dGVyCiAJICogc3VwcG9ydGVkIGJ5IHRoZSBWRlMgZm9yIHRoZSBDSSBjYXNlLgogCSAqLwotCWlmIChJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSAmYW1wOyZhbXA7IElTX0NBU0VGT0xERUQoZGlyKSkKJiM0MzsJaWYgKCFyZXR2YWwgJmFtcDsmYW1wOyBJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSAmYW1wOyZhbXA7IElTX0NBU0VGT0xERUQoZGlyKSkKIAkJZF9pbnZhbGlkYXRlKGRlbnRyeSk7CiAKLWVuZF9ybWRpcjoKLQlicmVsc2UoYmgpOwotCWlmIChoYW5kbGUpCi0JCWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpbGUgU3lzdGVtIFBhdGNoOiBleHQ0X3JtZGlyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGNoYW5nZXMgdGhlIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiB3aXRoaW4gYGZzL2V4dDQvbmFtZWkuY2AuIEl0JiMzOTtzIGEgc21hbGwgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbi4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXkmIzM5O3ZlIG1vdmVkIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCBhbmQgdGhlIGFzc29jaWF0ZWQgY2xlYW51cCDigJMgYGJyZWxzZShiaCk7YCBhbmQgYGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSlgIOKAkyB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsLiBObyB3YWl0LCBhY3R1YWxseSwgdGhleSBtb3ZlZCBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIHRvICphZnRlciogdGhlIGNsZWFudXAgY29kZSEgQW5kIGFkZGVkIGEgYCFyZXR2YWxgIGNvbmRpdGlvbiB0byBpdC4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gYnkgbG9va2luZyBhdCB0aGUgZGlmZjogdGhleSYjMzk7dmUgbW92ZWQgdGhlIGBkX2ludmFsaWRhdGVgIGNhbGwgYWZ0ZXIgdGhlIGBicmVsc2VgIGFuZCBqb3VybmFsIHN0b3AsIGFuZCBpdCBub3cgb25seSBydW5zIGlmIGAhcmV0dmFsYC4gUmlnaHQsIGdvdCBpdC4KClNvLCB0aGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBjcml0aWNhbCBiaXQgaXMgdGhhdCBgZF9pbnZhbGlkYXRlYCBpcyBub3cgKmRlcGVuZGVudCogb24gYHJldHZhbGAgKHN1Y2Nlc3Mgb2YgdGhlIHJtZGlyKSBhbmQgaGFwcGVucyAqYWZ0ZXIqIHRoZSBqb3VybmFsIGlzIHN0b3BwZWQuIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBmb3IgYW4gYWN0aXZlIGpvdXJuYWwgaGFuZGxlIHdoZW4gdGhlIGBkX2ludmFsaWRhdGVgIHdhcyBjYWxsZWQsIG9yIHdoZW4gdGhlIHJtZGlyIGhhZCBmYWlsZWQuIFRoaXMgbGlrZWx5IGZpeGVzIGEgYnVnLCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGpvdXJuYWwgY29ycnVwdGlvbiBvciBhIHJhY2UgY29uZGl0aW9uLiBNYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tbWVudCBhYm91dCBuZWdhdGl2ZSBkZW50cmllcyBhbmQgZW5jb2RpbmcvY2FzZS1pbnNlbnNpdGl2aXR5LgoKTm93LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc3BlY2lhbGlzdCwgdGhpcyBpcyBzb21ldGhpbmcgSSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gSXQgdG91Y2hlcyBhIGNvcmUgZmlsZXN5c3RlbSBvcGVyYXRpb24gKGBleHQ0X3JtZGlyYCksIGFuZCB0aGVzZSB0eXBlcyBvZiBjaGFuZ2VzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBleHBvc2luZyBzdWJ0bGUgYnVncy4gSSBzaG91bGQgYWJzb2x1dGVseSBmb2N1cyBvbiB0aGUgYGV4dDRfcm1kaXJgIHN5bWJvbC4gVGhlIGBDT05GSUdfVU5JQ09ERWAgaXMgYWxzbyBjaGVja2VkIHNvIGl0IGhhcyB0byBiZSBlbmFibGVkLiBJIHRoaW5rIEkgd2lsbCBmb2N1cyBvbiBgRVhUNF9GU2AgYW5kIGBVTklDT0RFYCBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVTklDT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3VuaWNvZGUvS2NvbmZpZy00LSNcbmZzL3VuaWNvZGUvS2NvbmZpZzo1OmNvbmZpZyBVTklDT0RFXG5mcy91bmljb2RlL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1VURi04IG5vcm1hbGl6YXRpb24gYW5kIGNhc2Vmb2xkaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy91bmljb2RlL0tjb25maWctMTItXG5mcy91bmljb2RlL0tjb25maWc6MTM6Y29uZmlnIFVOSUNPREVfTk9STUFMSVpBVElPTl9LVU5JVF9URVNUXG5mcy91bmljb2RlL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IFVURi04IG5vcm1hbGl6YXRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRmlsZSBTeXN0ZW0gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgaW50byBzb21ldGhpbmcsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBvdmVybG9vayBgRVhUNF9GU2AuIFdlJiMzOTt2ZSBwcm9iYWJseSBsb29rZWQgYXQgb3RoZXIgZmlsZSBzeXN0ZW1zLCBvciBwZXJoYXBzIHRoaXMgaXMgcGFydCBvZiBhIGxhcmdlciBhcmNoaXRlY3R1cmUgZGVjaXNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGNvbnNpZGVyZWQgdGhpcyBvbmUgdG9vLiBJJiMzOTttIGdvaW5nIHRvIHJ1biBkb3duIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBpdHMgY2hhcmFjdGVyaXN0aWNzIGluIHRoZSBjb250ZXh0IG9mIG91ciByZXF1aXJlbWVudHMuIFRoaW5ncyBsaWtlIGpvdXJuYWxpbmcgYmVoYXZpb3IsIHBlcmZvcm1hbmNlIG9uIGRpZmZlcmVudCB3b3JrbG9hZHMsIHN1cHBvcnQgZm9yIGFkdmFuY2VkIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhbnkga25vd24gbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGUgY3VycmVudCBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBjb21wYXJlIGl0IGluIGRldGFpbCB0byB0aGUgb3RoZXIgY29udGVuZGVycyB0byBlbnN1cmUgd2UgaGF2ZSB0aGUgb3B0aW1hbCBmaWxlIHN5c3RlbSBmb3IgdGhlIGN1cnJlbnQgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyMwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSBmb3IgYGV4dDRfcm1kaXJgKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgZXh0NF9ybWRpcmAgZnVuY3Rpb24sIGFuZCB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9ucyBJJiMzOTttIHNlZWluZyBhcmUgYEVYVDRfRlNgIGFuZCBgVU5JQ09ERWAuIE1ha2VzIHNlbnNlLCBzdGFuZGFyZCBzdHVmZiBmb3IgRVhUNC4gQnV0LCBJIGFsd2F5cyBsaWtlIHRvIGJlIHRob3JvdWdoOyBsZXQmIzM5O3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IGxpbmtlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCBpdHMgYmVoYXZpb3IuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElTX0NBU0VGT0xERUQoZGlyKWAuIEl0JiMzOTtzIGEgY29tbW9uIGZhY3RvciBpbiB2YXJpb3VzIEZTIGZ1bmN0aW9uYWxpdHkuIElzIHRoZXJlIGFub3RoZXIgY29uZmlnIEkgbWlnaHQgaGF2ZSBtaXNzZWQgdGhhdCBpbmZsdWVuY2VzIHRoYXQgcGFydGljdWxhciBtYWNybz8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGl0JiMzOTtzIGRlZmluaXRpb24sIGp1c3QgdG8gYmUgc3VyZS4uLiBObywgaXQmIzM5O3MganVzdCBhIG1hY3JvLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBnb29kIGZvciBub3csIGJ1dCBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyBhcyBJIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIElTX0NBU0VGT0xERUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mcy5oPTIwOTA9ZXh0ZXJuIGxvZmZfdCB2ZnNfZGVkdXBlX2ZpbGVfcmFuZ2Vfb25lKHN0cnVjdCBmaWxlICpzcmNfZmlsZSwgbG9mZl90IHNyY19wb3MsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTIxNjktI2RlZmluZSBJU19FTkNSWVBURUQoaW5vZGUpXHQoKGlub2RlKS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBTX0VOQ1JZUFRFRClcbmluY2x1ZGUvbGludXgvZnMuaDoyMTcwOiNkZWZpbmUgSVNfQ0FTRUZPTERFRChpbm9kZSlcdCgoaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IFNfQ0FTRUZPTEQpXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjE3MS0jZGVmaW5lIElTX1ZFUklUWShpbm9kZSlcdCgoaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IFNfVkVSSVRZKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTYKCQkJCQkJCW91dHB1dDogMTE1CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipTdHJhdGVnaWMgQXBwcm9hY2ggZm9yIFRhcmdldGVkIEZ1enppbmcqKgoKUmlnaHQsIHNvIHRoZSBVbmljb2RlIHN1cHBvcnQgc2VlbXMgYWRlcXVhdGUsIHRoYXQmIzM5O3MgZ29vZC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgdGVsbHMgdGhlIGZ1enplciB0aGF0IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyB0aW1lIG9uLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiBzcGVjaWZpY2FsbHkuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFwcHJvYWNoLiBUbyBlbnN1cmUgdGhlIGNvbnRleHQgaXMgY29ycmVjdGx5IHNldCwgSSBuZWVkIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgRVhUNF9GU2AgaXMgZnVuZGFtZW50YWwgZm9yIHRoaXMsIG5hdHVyYWxseS4gQW5kLCBhcyBwcmV2aW91c2x5IGNvbmZpcm1lZCwgSSBuZWVkIHRvIGVuYWJsZSBgVU5JQ09ERWAgc3VwcG9ydC4gV2l0aCB0aGVzZSBzZXR0aW5ncywgSSYjMzk7bSBjb25maWRlbnQgSSBjYW4gZWxpY2l0IGEgZ29vZCBzZXQgb2YgdGVzdCBjYXNlcyB0byBleHBvc2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtVTklDT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9ybWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWUzZTBjZjQ3NmZkYjFmNjMwMzM2YTFjMmVlNmVmMmM1MzFmZmE5ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDEzOjQ1OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9uYW1laS5jCmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L25hbWVpLmMKQEAgLTMyMDksMTkgJiM0MzszMjA5LDIwIEBAIHN0YXRpYyBpbnQgZXh0NF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCWV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTsKIAlyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpOwogCiYjNDM7ZW5kX3JtZGlyOgomIzQzOwlicmVsc2UoYmgpOwomIzQzOwlpZiAoaGFuZGxlKQomIzQzOwkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKJiM0MzsKIAkvKiBWRlMgbmVnYXRpdmUgZGVudHJpZXMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEVuY29kaW5nIGFuZAogCSAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJiMzOTtsbCB3YW50IGF2b2lkCiAJICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlCiAJICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXIKIAkgKiBzdXBwb3J0ZWQgYnkgdGhlIFZGUyBmb3IgdGhlIENJIGNhc2UuCiAJICovCi0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpICZhbXA7JmFtcDsgSVNfQ0FTRUZPTERFRChkaXIpKQomIzQzOwlpZiAoIXJldHZhbCAmYW1wOyZhbXA7IElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpICZhbXA7JmFtcDsgSVNfQ0FTRUZPTERFRChkaXIpKQogCQlkX2ludmFsaWRhdGUoZGVudHJ5KTsKIAotZW5kX3JtZGlyOgotCWJyZWxzZShiaCk7Ci0JaWYgKGhhbmRsZSkKLQkJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDgzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBSZWFzb25pbmcgZm9yIGV4dDRfcm1kaXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCB0byBgZXh0NF9ybWRpcmAgaW4gYGZzL2V4dDQvbmFtZWkuY2AgaXMgc2hpZnRpbmcgdGhpbmdzIGFyb3VuZCwgc3BlY2lmaWNhbGx5IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGNvbmNlcm5pbmcgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBhbmQgdGhlIGNsZWFudXAgY29kZS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGp1c3QgbW92aW5nIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCwgYnV0IGl0JiMzOTtzIG1vcmUgbnVhbmNlZCB0aGFuIHRoYXQuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGlzOiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsIGlzIG5vdyAqYWZ0ZXIqIHRoZSBgYnJlbHNlKGJoKTsgZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtgIGNsZWFudXAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZWQgb25seSBpZiBgcmV0dmFsYCBpcyB6ZXJvIChpbmRpY2F0aW5nIHN1Y2Nlc3MpLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUsIGRlYWRsb2NrLCBvciBzb21ldGhpbmcgc2ltaWxhciByZWxhdGVkIHRvIGpvdXJuYWwgc3RvcHBpbmcgYW5kIGRlbnRyeSBpbnZhbGlkYXRpb24uIE9yLCBtYXliZSwgaXQmIzM5O3MganVzdCBtZWFudCB0byBhdm9pZCBpbnZhbGlkYXRpbmcgdGhlIGRlbnRyeSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBwcm9jZXNzIChgcmV0dmFsYCBub24temVybykuIFRoZSBhZGRlZCBgIXJldHZhbGAgY29uZGl0aW9uIGlzIGtleS4KCk5vdywgbXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKiAgICoqYHJldHZhbGAqKjogVGhpcyBpcyBhbiBpbnRlZ2VyLCBzbyBpdCYjMzk7cyBpbml0aWFsaXplZCBiZWZvcmUgdXNlLgoqICAgKipgZGlyYCwgYGRlbnRyeWAsIGBiaGAsIGBoYW5kbGVgKio6IFRoZXNlIGFyZSBwb2ludGVycy4gVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIG1hbmlwdWxhdGlvbiB0aGF0IHdvdWxkIGNhdXNlIHRoZW0gdG8gYmVjb21lIHVuaW5pdGlhbGl6ZWQuIFRoZXkmIzM5O3JlIGFscmVhZHkgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuIFRoZSBjb2RlIGlzIG9ubHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbi4KClNpbmNlIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIG9ubHkgaW52b2x2ZSByZW9yZGVyaW5nIGV4aXN0aW5nIGluaXRpYWxpemVkIHZhcmlhYmxlcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MsIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLCByZXNwZWN0aXZlbHkuIEtNU0FOJiMzOTtzIHB1cnBvc2UgaXMgbm90IG5lY2Vzc2FyeSBoZXJlLgoKVGhlcmVmb3JlLCBteSBLTVNBTiByZWFzb25pbmcgaXMgYXMgZm9sbG93czogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo0NTo1Mi4zOTMyODM4NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjczMzA2OTQ1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiVU5JQ09ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfcm1kaXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo0NTo1Mi4zOTMyOTAwMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzQ5MTk0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDEzOjQ1OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbmFtZWkuYyBiL2ZzL2V4dDQvbmFtZWkuY1xcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9uYW1laS5jXFxuKysrIGIvZnMvZXh0NC9uYW1laS5jXFxuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgZGVudHJ5KTtcXG4gXFx0cmV0dmFsID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTtcXG4gXFxuK2VuZF9ybWRpcjpcXG4rXFx0YnJlbHNlKGJoKTtcXG4rXFx0aWYgKGhhbmRsZSlcXG4rXFx0XFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcXG4rXFxuIFxcdC8qIFZGUyBuZWdhdGl2ZSBkZW50cmllcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggRW5jb2RpbmcgYW5kXFxuIFxcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcXG4gXFx0ICogaW52YWxpZGF0aW5nIHRoZSBkZW50cmllcyBoZXJlLCBhbG9uZ3NpZGUgd2l0aCByZXR1cm5pbmcgdGhlXFxuIFxcdCAqIG5lZ2F0aXZlIGRlbnRyaWVzIGF0IGV4dDRfbG9va3VwKCksIHdoZW4gaXQgaXMgYmV0dGVyXFxuIFxcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cXG4gXFx0ICovXFxuLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19VTklDT0RFKSBcXHUwMDI2XFx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXFxuK1xcdGlmICghcmV0dmFsIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFxcdTAwMjZcXHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcXG4gXFx0XFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XFxuIFxcbi1lbmRfcm1kaXI6XFxuLVxcdGJyZWxzZShiaCk7XFxuLVxcdGlmIChoYW5kbGUpXFxuLVxcdFxcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjQ1OjUzLjg2ODkxNzUxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ5MTY0NzI5MTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJVTklDT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9ybWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9mcy9leHQ0L25hbWVpLmNcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L25hbWVpLmNcbisrKyBiL2ZzL2V4dDQvbmFtZWkuY1xuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7XG4gXHRyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpO1xuIFxuK2VuZF9ybWRpcjpcbitcdGJyZWxzZShiaCk7XG4rXHRpZiAoaGFuZGxlKVxuK1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1xuIFx0LyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmRcbiBcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcbiBcdCAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZVxuIFx0ICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXJcbiBcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cbiBcdCAqL1xuLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFx1MDAyNlx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXG4rXHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjQ1OjUzLjg2ODkxOTE2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzM1Njg1ODYwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaWxlIFN5c3RlbSBQYXRjaDogZXh0NF9ybWRpciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgY2hhbmdlcyB0aGUgYGV4dDRfcm1kaXJgIGZ1bmN0aW9uIHdpdGhpbiBgZnMvZXh0NC9uYW1laS5jYC4gSXQncyBhIHNtYWxsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24uIE15IGZpcnN0IGltcHJlc3Npb24gaXMgdGhhdCB0aGV5J3ZlIG1vdmVkIHRoZSBgZW5kX3JtZGlyYCBsYWJlbCBhbmQgdGhlIGFzc29jaWF0ZWQgY2xlYW51cCDigJMgYGJyZWxzZShiaCk7YCBhbmQgYGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSlgIOKAkyB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGRfaW52YWxpZGF0ZShkZW50cnkpYCBjYWxsLiBObyB3YWl0LCBhY3R1YWxseSwgdGhleSBtb3ZlZCBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIHRvICphZnRlciogdGhlIGNsZWFudXAgY29kZSEgQW5kIGFkZGVkIGEgYCFyZXR2YWxgIGNvbmRpdGlvbiB0byBpdC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIGJ5IGxvb2tpbmcgYXQgdGhlIGRpZmY6IHRoZXkndmUgbW92ZWQgdGhlIGBkX2ludmFsaWRhdGVgIGNhbGwgYWZ0ZXIgdGhlIGBicmVsc2VgIGFuZCBqb3VybmFsIHN0b3AsIGFuZCBpdCBub3cgb25seSBydW5zIGlmIGAhcmV0dmFsYC4gUmlnaHQsIGdvdCBpdC5cblxuU28sIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNyaXRpY2FsIGJpdCBpcyB0aGF0IGBkX2ludmFsaWRhdGVgIGlzIG5vdyAqZGVwZW5kZW50KiBvbiBgcmV0dmFsYCAoc3VjY2VzcyBvZiB0aGUgcm1kaXIpIGFuZCBoYXBwZW5zICphZnRlciogdGhlIGpvdXJuYWwgaXMgc3RvcHBlZC4gUHJldmlvdXNseSwgdGhlcmUgd2FzIGEgcG90ZW50aWFsIGZvciBhbiBhY3RpdmUgam91cm5hbCBoYW5kbGUgd2hlbiB0aGUgYGRfaW52YWxpZGF0ZWAgd2FzIGNhbGxlZCwgb3Igd2hlbiB0aGUgcm1kaXIgaGFkIGZhaWxlZC4gVGhpcyBsaWtlbHkgZml4ZXMgYSBidWcsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gam91cm5hbCBjb3JydXB0aW9uIG9yIGEgcmFjZSBjb25kaXRpb24uIE1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjb21tZW50IGFib3V0IG5lZ2F0aXZlIGRlbnRyaWVzIGFuZCBlbmNvZGluZy9jYXNlLWluc2Vuc2l0aXZpdHkuXG5cbk5vdywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNwZWNpYWxpc3QsIHRoaXMgaXMgc29tZXRoaW5nIEkgc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcuIEl0IHRvdWNoZXMgYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIChgZXh0NF9ybWRpcmApLCBhbmQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MuIEkgc2hvdWxkIGFic29sdXRlbHkgZm9jdXMgb24gdGhlIGBleHQ0X3JtZGlyYCBzeW1ib2wuIFRoZSBgQ09ORklHX1VOSUNPREVgIGlzIGFsc28gY2hlY2tlZCBzbyBpdCBoYXMgdG8gYmUgZW5hYmxlZC4gSSB0aGluayBJIHdpbGwgZm9jdXMgb24gYEVYVDRfRlNgIGFuZCBgVU5JQ09ERWAgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjExLjIyNTc4MDYxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1NzY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVU5JQ09ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdW5pY29kZS9LY29uZmlnLTQtI1xcbmZzL3VuaWNvZGUvS2NvbmZpZzo1OmNvbmZpZyBVTklDT0RFXFxuZnMvdW5pY29kZS9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlVURi04IG5vcm1hbGl6YXRpb24gYW5kIGNhc2Vmb2xkaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy91bmljb2RlL0tjb25maWctMTItXFxuZnMvdW5pY29kZS9LY29uZmlnOjEzOmNvbmZpZyBVTklDT0RFX05PUk1BTElaQVRJT05fS1VOSVRfVEVTVFxcbmZzL3VuaWNvZGUvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBVVEYtOCBub3JtYWxpemF0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjExLjI5Njg0MTg5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODQ0NjMzMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRmlsZSBTeXN0ZW0gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGludG8gc29tZXRoaW5nLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBvdmVybG9vayBgRVhUNF9GU2AuIFdlJ3ZlIHByb2JhYmx5IGxvb2tlZCBhdCBvdGhlciBmaWxlIHN5c3RlbXMsIG9yIHBlcmhhcHMgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGFyY2hpdGVjdHVyZSBkZWNpc2lvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSd2ZSBjb25zaWRlcmVkIHRoaXMgb25lIHRvby4gSSdtIGdvaW5nIHRvIHJ1biBkb3duIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBpdHMgY2hhcmFjdGVyaXN0aWNzIGluIHRoZSBjb250ZXh0IG9mIG91ciByZXF1aXJlbWVudHMuIFRoaW5ncyBsaWtlIGpvdXJuYWxpbmcgYmVoYXZpb3IsIHBlcmZvcm1hbmNlIG9uIGRpZmZlcmVudCB3b3JrbG9hZHMsIHN1cHBvcnQgZm9yIGFkdmFuY2VkIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhbnkga25vd24gbGltaXRhdGlvbnMgb3IgcG90ZW50aWFsIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGUgY3VycmVudCBzdGFjay4gSSdsbCBuZWVkIHRvIGNvbXBhcmUgaXQgaW4gZGV0YWlsIHRvIHRoZSBvdGhlciBjb250ZW5kZXJzIHRvIGVuc3VyZSB3ZSBoYXZlIHRoZSBvcHRpbWFsIGZpbGUgc3lzdGVtIGZvciB0aGUgY3VycmVudCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTE6NTAuMTQxNDc3OTM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjU2MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjUxOjUwLjE5MDczOTcwN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0NTUxODM3MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUgZm9yIGBleHQ0X3JtZGlyYCoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzIGBleHQ0X3JtZGlyYCBmdW5jdGlvbiwgYW5kIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb25zIEknbSBzZWVpbmcgYXJlIGBFWFQ0X0ZTYCBhbmQgYFVOSUNPREVgLiBNYWtlcyBzZW5zZSwgc3RhbmRhcmQgc3R1ZmYgZm9yIEVYVDQuIEJ1dCwgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaDsgbGV0J3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBzdWJ0bHkgbGlua2VkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWZmZWN0IGl0cyBiZWhhdmlvci5cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgYElTX0NBU0VGT0xERUQoZGlyKWAuIEl0J3MgYSBjb21tb24gZmFjdG9yIGluIHZhcmlvdXMgRlMgZnVuY3Rpb25hbGl0eS4gSXMgdGhlcmUgYW5vdGhlciBjb25maWcgSSBtaWdodCBoYXZlIG1pc3NlZCB0aGF0IGluZmx1ZW5jZXMgdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBMZXQncyB0YWtlIGEgbG9vayBhdCBpdCdzIGRlZmluaXRpb24sIGp1c3QgdG8gYmUgc3VyZS4uLiBObywgaXQncyBqdXN0IGEgbWFjcm8uIExvb2tzIGxpa2Ugd2UncmUgZ29vZCBmb3Igbm93LCBidXQgSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyBhcyBJIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1MjoxNC43NDI1NzkyOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MTY2NDU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgSVNfQ0FTRUZPTERFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9mcy5oPTIwOTA9ZXh0ZXJuIGxvZmZfdCB2ZnNfZGVkdXBlX2ZpbGVfcmFuZ2Vfb25lKHN0cnVjdCBmaWxlICpzcmNfZmlsZSwgbG9mZl90IHNyY19wb3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjE2OS0jZGVmaW5lIElTX0VOQ1JZUFRFRChpbm9kZSlcXHQoKGlub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IFNfRU5DUllQVEVEKVxcbmluY2x1ZGUvbGludXgvZnMuaDoyMTcwOiNkZWZpbmUgSVNfQ0FTRUZPTERFRChpbm9kZSlcXHQoKGlub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IFNfQ0FTRUZPTEQpXFxuaW5jbHVkZS9saW51eC9mcy5oLTIxNzEtI2RlZmluZSBJU19WRVJJVFkoaW5vZGUpXFx0KChpbm9kZSktXFx1MDAzZWlfZmxhZ3MgXFx1MDAyNiBTX1ZFUklUWSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTI6MTYuNDA0MjQ4MTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MDMyNDIwMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKlN0cmF0ZWdpYyBBcHByb2FjaCBmb3IgVGFyZ2V0ZWQgRnV6emluZyoqXG5cblJpZ2h0LCBzbyB0aGUgVW5pY29kZSBzdXBwb3J0IHNlZW1zIGFkZXF1YXRlLCB0aGF0J3MgZ29vZC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgdGVsbHMgdGhlIGZ1enplciB0aGF0IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyB0aW1lIG9uLiBJJ20gZ29pbmcgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfcm1kaXJgIGZ1bmN0aW9uIHNwZWNpZmljYWxseS4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYXBwcm9hY2guIFRvIGVuc3VyZSB0aGUgY29udGV4dCBpcyBjb3JyZWN0bHkgc2V0LCBJIG5lZWQgdG8gZW5hYmxlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIGBFWFQ0X0ZTYCBpcyBmdW5kYW1lbnRhbCBmb3IgdGhpcywgbmF0dXJhbGx5LiBBbmQsIGFzIHByZXZpb3VzbHkgY29uZmlybWVkLCBJIG5lZWQgdG8gZW5hYmxlIGBVTklDT0RFYCBzdXBwb3J0LiBXaXRoIHRoZXNlIHNldHRpbmdzLCBJJ20gY29uZmlkZW50IEkgY2FuIGVsaWNpdCBhIGdvb2Qgc2V0IG9mIHRlc3QgY2FzZXMgdG8gZXhwb3NlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoaXMgc3BlY2lmaWMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5NiwiT3V0cHV0VG9rZW5zIjoxMTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1NDowNS40MzY2NzE2NDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUzNDIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiVU5JQ09ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfcm1kaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCwgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBkX2ludmFsaWRhdGVgIGFuZCBgZXh0NF9qb3VybmFsX3N0b3BgLCBhbmQgYWRkaW5nIGEgY2hlY2sgZm9yIGAhcmV0dmFsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2NrcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJVTklDT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9ybWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgLCBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGRfaW52YWxpZGF0ZWAgYW5kIGBleHQ0X2pvdXJuYWxfc3RvcGAsIGFuZCBhZGRpbmcgYSBjaGVjayBmb3IgYCFyZXR2YWxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgZGVhZGxvY2tzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMzo1NDowNS41MTYyMTIzMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjA3NzU3MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTM6NTQ6MDUuNTE2Njc0Mzc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0MjA3MjkxNDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2xlYW51cCBwYXRoIG9mIGBleHQ0X3JtZGlyYCBieSBtb3ZpbmcgdGhlIGBkX2ludmFsaWRhdGUoKWAgY2FsbCBhZnRlciBgZXh0NF9qb3VybmFsX3N0b3AoKWAgYW5kIGBicmVsc2UoKWAsIGFuZCBhZGRzIGEgY2hlY2sgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBkZW50cnkgaWYgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYCFyZXR2YWxgKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBWRlMgZGVudHJ5IG1hbmFnZW1lbnQgYW5kIGpvdXJuYWwgaGFuZGxpbmcsIGxpa2VseSBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUsIGxvY2tpbmcgaXNzdWUsIG9yIGluY29ycmVjdCBpbnZhbGlkYXRpb24gb24gZXJyb3IgcGF0aHMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZTNlMGNmNDc2ZmRiMWY2MzAzMzZhMWMyZWU2ZWYyYzUzMWZmYTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTM6NDU6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9mcy9leHQ0L25hbWVpLmNcbmluZGV4IGE2Mzg2YzFkMjM3ZjEuLjIzMWEyNzRiODE0ZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L25hbWVpLmNcbisrKyBiL2ZzL2V4dDQvbmFtZWkuY1xuQEAgLTMyMDksMTkgKzMyMDksMjAgQEAgc3RhdGljIGludCBleHQ0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRleHQ0X2ZjX3RyYWNrX3VubGluayhoYW5kbGUsIGRlbnRyeSk7XG4gXHRyZXR2YWwgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBkaXIpO1xuIFxuK2VuZF9ybWRpcjpcbitcdGJyZWxzZShiaCk7XG4rXHRpZiAoaGFuZGxlKVxuK1x0XHRleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpO1xuK1xuIFx0LyogVkZTIG5lZ2F0aXZlIGRlbnRyaWVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBFbmNvZGluZyBhbmRcbiBcdCAqIENhc2UtaW5zZW5zaXRpdmVuZXNzLiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgYXZvaWRcbiBcdCAqIGludmFsaWRhdGluZyB0aGUgZGVudHJpZXMgaGVyZSwgYWxvbmdzaWRlIHdpdGggcmV0dXJuaW5nIHRoZVxuIFx0ICogbmVnYXRpdmUgZGVudHJpZXMgYXQgZXh0NF9sb29rdXAoKSwgd2hlbiBpdCBpcyBiZXR0ZXJcbiBcdCAqIHN1cHBvcnRlZCBieSB0aGUgVkZTIGZvciB0aGUgQ0kgY2FzZS5cbiBcdCAqL1xuLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VOSUNPREUpIFx1MDAyNlx1MDAyNiBJU19DQVNFRk9MREVEKGRpcikpXG4rXHRpZiAoIXJldHZhbCBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfVU5JQ09ERSkgXHUwMDI2XHUwMDI2IElTX0NBU0VGT0xERUQoZGlyKSlcbiBcdFx0ZF9pbnZhbGlkYXRlKGRlbnRyeSk7XG4gXG4tZW5kX3JtZGlyOlxuLVx0YnJlbHNlKGJoKTtcbi1cdGlmIChoYW5kbGUpXG4tXHRcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjU0OjA1LjUxNjY3NTIxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNzI2Nzc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBSZWFzb25pbmcgZm9yIGV4dDRfcm1kaXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHRvIGBleHQ0X3JtZGlyYCBpbiBgZnMvZXh0NC9uYW1laS5jYCBpcyBzaGlmdGluZyB0aGluZ3MgYXJvdW5kLCBzcGVjaWZpY2FsbHkgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgY29uY2VybmluZyBgZF9pbnZhbGlkYXRlKGRlbnRyeSlgIGFuZCB0aGUgY2xlYW51cCBjb2RlLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMganVzdCBtb3ZpbmcgdGhlIGBlbmRfcm1kaXJgIGxhYmVsLCBidXQgaXQncyBtb3JlIG51YW5jZWQgdGhhbiB0aGF0LiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhpczogdGhlIGBkX2ludmFsaWRhdGUoZGVudHJ5KWAgY2FsbCBpcyBub3cgKmFmdGVyKiB0aGUgYGJyZWxzZShiaCk7IGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7YCBjbGVhbnVwIGFuZCBpcyBjb25kaXRpb25hbGx5IGV4ZWN1dGVkIG9ubHkgaWYgYHJldHZhbGAgaXMgemVybyAoaW5kaWNhdGluZyBzdWNjZXNzKS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUsIGRlYWRsb2NrLCBvciBzb21ldGhpbmcgc2ltaWxhciByZWxhdGVkIHRvIGpvdXJuYWwgc3RvcHBpbmcgYW5kIGRlbnRyeSBpbnZhbGlkYXRpb24uIE9yLCBtYXliZSwgaXQncyBqdXN0IG1lYW50IHRvIGF2b2lkIGludmFsaWRhdGluZyB0aGUgZGVudHJ5IGlmIHRoZXJlIHdhcyBhbiBlcnJvciBkdXJpbmcgdGhlIHByb2Nlc3MgKGByZXR2YWxgIG5vbi16ZXJvKS4gVGhlIGFkZGVkIGAhcmV0dmFsYCBjb25kaXRpb24gaXMga2V5LlxuXG5Ob3csIG15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duOlxuXG4qICAgKipgcmV0dmFsYCoqOiBUaGlzIGlzIGFuIGludGVnZXIsIHNvIGl0J3MgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS5cbiogICAqKmBkaXJgLCBgZGVudHJ5YCwgYGJoYCwgYGhhbmRsZWAqKjogVGhlc2UgYXJlIHBvaW50ZXJzLiBUaGUgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucyBvciBtYW5pcHVsYXRpb24gdGhhdCB3b3VsZCBjYXVzZSB0aGVtIHRvIGJlY29tZSB1bmluaXRpYWxpemVkLiBUaGV5J3JlIGFscmVhZHkgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBleGlzdGluZyBjb2RlIGZsb3cuIFRoZSBjb2RlIGlzIG9ubHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbi5cblxuU2luY2UgdGhlIHBhdGNoJ3MgY2hhbmdlcyBvbmx5IGludm9sdmUgcmVvcmRlcmluZyBleGlzdGluZyBpbml0aWFsaXplZCB2YXJpYWJsZXMsIEknbSBjb25maWRlbnQgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcywgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAsIHJlc3BlY3RpdmVseS4gS01TQU4ncyBwdXJwb3NlIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS5cblxuVGhlcmVmb3JlLCBteSBLTVNBTiByZWFzb25pbmcgaXMgYXMgZm9sbG93czogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjbGVhbnVwIHBhdGggb2YgYGV4dDRfcm1kaXJgIGJ5IG1vdmluZyB0aGUgYGRfaW52YWxpZGF0ZSgpYCBjYWxsIGFmdGVyIGBleHQ0X2pvdXJuYWxfc3RvcCgpYCBhbmQgYGJyZWxzZSgpYCwgYW5kIGFkZHMgYSBjaGVjayB0byBvbmx5IGludmFsaWRhdGUgdGhlIGRlbnRyeSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIChgIXJldHZhbGApLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIFZGUyBkZW50cnkgbWFuYWdlbWVudCBhbmQgam91cm5hbCBoYW5kbGluZywgbGlrZWx5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSwgbG9ja2luZyBpc3N1ZSwgb3IgaW5jb3JyZWN0IGludmFsaWRhdGlvbiBvbiBlcnJvciBwYXRocy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU4LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEzOjU0OjM5LjcyMzk0Nzk2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAgYnkgbW92aW5nIHRoZSBgZF9pbnZhbGlkYXRlKClgIGNhbGwgYWZ0ZXIgYGV4dDRfam91cm5hbF9zdG9wKClgIGFuZCBgYnJlbHNlKClgLCBhbmQgYWRkcyBhIGNoZWNrIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZGVudHJ5IGlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGAhcmV0dmFsYCkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gVkZTIGRlbnRyeSBtYW5hZ2VtZW50IGFuZCBqb3VybmFsIGhhbmRsaW5nLCBsaWtlbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlLCBsb2NraW5nIGlzc3VlLCBvciBpbmNvcnJlY3QgaW52YWxpZGF0aW9uIG9uIGVycm9yIHBhdGhzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNsZWFudXAgcGF0aCBvZiBgZXh0NF9ybWRpcmAgYnkgbW92aW5nIHRoZSBgZF9pbnZhbGlkYXRlKClgIGNhbGwgYWZ0ZXIgYGV4dDRfam91cm5hbF9zdG9wKClgIGFuZCBgYnJlbHNlKClgLCBhbmQgYWRkcyBhIGNoZWNrIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZGVudHJ5IGlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGAhcmV0dmFsYCkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gVkZTIGRlbnRyeSBtYW5hZ2VtZW50IGFuZCBqb3VybmFsIGhhbmRsaW5nLCBsaWtlbHkgYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlLCBsb2NraW5nIGlzc3VlLCBvciBpbmNvcnJlY3QgaW52YWxpZGF0aW9uIG9uIGVycm9yIHBhdGhzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5bk2f[1] Phase: Succeeded StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 13:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 13:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2] Phase: Succeeded StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 13:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 13:54:51 +0000 UTC FinishedAt: 2026-08-27 13:54:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5bk2f/series-workflow5bk2f-convert-artifact-3043276493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-27 13:55:01 +0000 UTC FinishedAt: 2026-08-27 14:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-27 13:55:01 +0000 UTC FinishedAt: 2026-08-27 14:11:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*03b0dbaf-af2d-4636-b1a1-1109b4e4a342,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-workflow5bk2f/series-workflow5bk2f-convert-artifact-3043276493/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": "10838adf-a50f-4cad-8aaa-d067192c0a2a", "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-workflow5bk2f/series-workflow5bk2f-build-action-928577347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-27 13:55:01 +0000 UTC FinishedAt: 2026-08-27 14:11:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*03b0dbaf-af2d-4636-b1a1-1109b4e4a342,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-workflow5bk2f/series-workflow5bk2f-convert-artifact-3043276493/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": "10838adf-a50f-4cad-8aaa-d067192c0a2a", "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-workflow5bk2f/series-workflow5bk2f-build-action-928577347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-27 14:11:10 +0000 UTC FinishedAt: 2026-08-27 14:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-27 14:11:10 +0000 UTC FinishedAt: 2026-08-27 14:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-27 14:11:10 +0000 UTC FinishedAt: 2026-08-27 14:11:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-27 14:11:10 +0000 UTC FinishedAt: 2026-08-27 14:11:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5bk2f/series-workflow5bk2f-convert-artifact-2936493352/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-27 14:11:20 +0000 UTC FinishedAt: 2026-08-27 14:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-27 14:11:20 +0000 UTC FinishedAt: 2026-08-27 14:13:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10838adf-a50f-4cad-8aaa-d067192c0a2a,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-workflow5bk2f/series-workflow5bk2f-build-action-928577347/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-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-27 14:13:11 +0000 UTC FinishedAt: 2026-08-27 14:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-27 14:13:11 +0000 UTC FinishedAt: 2026-08-27 14:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-27 14:13:11 +0000 UTC FinishedAt: 2026-08-27 14:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-27 14:13:11 +0000 UTC FinishedAt: 2026-08-27 14:30:52 +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:*03b0dbaf-af2d-4636-b1a1-1109b4e4a342,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-workflow5bk2f/series-workflow5bk2f-convert-artifact-2936493352/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": "eee3c30e-8d83-4f97-a332-78f67f27df68", "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-workflow5bk2f/series-workflow5bk2f-build-action-1582322388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-27 14:13:11 +0000 UTC FinishedAt: 2026-08-27 14:30:42 +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:*03b0dbaf-af2d-4636-b1a1-1109b4e4a342,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-workflow5bk2f/series-workflow5bk2f-convert-artifact-2936493352/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": "eee3c30e-8d83-4f97-a332-78f67f27df68", "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-workflow5bk2f/series-workflow5bk2f-build-action-1582322388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-27 14:30:52 +0000 UTC FinishedAt: 2026-08-27 14:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-27 14:30:52 +0000 UTC FinishedAt: 2026-08-27 14:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-27 14:30:52 +0000 UTC FinishedAt: 2026-08-27 14:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-27 14:30:52 +0000 UTC FinishedAt: 2026-08-27 14:32:50 +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:*eee3c30e-8d83-4f97-a332-78f67f27df68,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-workflow5bk2f/series-workflow5bk2f-build-action-1582322388/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-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +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":["ext4_rmdir"],"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:*10838adf-a50f-4cad-8aaa-d067192c0a2a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eee3c30e-8d83-4f97-a332-78f67f27df68,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-workflow5bk2f/series-workflow5bk2f-build-action-928577347/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-workflow5bk2f/series-workflow5bk2f-build-action-1582322388/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 14:33:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 14:33:04 +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":["ext4_rmdir"],"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-workflow5bk2f/series-workflow5bk2f-convert-artifact-764997985/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 14:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 14:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-27 14:33:00 +0000 UTC FinishedAt: 2026-08-27 14:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-27 14:33:10 +0000 UTC FinishedAt: 2026-08-27 17:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bk2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_rmdir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","UNICODE"],"series_id":"0e277ab3-3a26-4e0c-a4d0-4ae22aebf81f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-27 14:33:10 +0000 UTC FinishedAt: 2026-08-27 17:35:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10838adf-a50f-4cad-8aaa-d067192c0a2a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eee3c30e-8d83-4f97-a332-78f67f27df68,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-workflow5bk2f/series-workflow5bk2f-build-action-928577347/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-workflow5bk2f/series-workflow5bk2f-build-action-1582322388/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-workflow5bk2f/series-workflow5bk2f-convert-artifact-764997985/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,}