Name: series-workflowd5jd8 Phase: Succeeded StartedAt: 2026-08-08 04:19:50 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[0] Phase: Succeeded StartedAt: 2026-08-08 04:19:50 +0000 UTC FinishedAt: 2026-08-08 04:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 04:19:50 +0000 UTC FinishedAt: 2026-08-08 04:41:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "881d0564-538b-4ec2-bef3-d636d47bff0c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_get_tree_submount", "fuse_dentry_automount" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF90cmVlX3N1Ym1vdW50JiMzNDssCiAgICAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjY5ZmJkYzcwNmM0OTE5MDg4NmY4ZjlmYmQ4MzIwZGFkODRlMjI1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDQ6NDA6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li40NTVjN2ZlYmEwNTc1IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC0xNjM5LDYgJiM0MzsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbiYjNDM7XHRpZiAoIXJvb3QpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcdC8qXG4gXHQgKiBUaGlzIGlub2RlIGlzIGp1c3QgYSBkdXBsaWNhdGUsIHNvIGl0IGlzIG5vdCBsb29rZWQgdXAgYW5kXG4gXHQgKiBpdHMgbmxvb2t1cCBzaG91bGQgbm90IGJlIGluY3JlbWVudGVkLiAgZnVzZV9pZ2V0KCkgZG9lc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfdHJlZV9zdWJtb3VudCYjMzQ7LAogICAgJiMzNDtmdXNlX2RlbnRyeV9hdXRvbW91bnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuYwppbmRleCBkOTc1MDczYzYwMjk2Li40NTVjN2ZlYmEwNTc1IDEwMDY0NAotLS0gYS9mcy9mdXNlL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9pbm9kZS5jCkBAIC0xNjM5LDYgJiM0MzsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAlmdXNlX2ZpbGxfYXR0cl9mcm9tX2lub2RlKCZhbXA7cm9vdF9hdHRyLCBwYXJlbnRfZmkpOwogCXJvb3QgPSBmdXNlX2lnZXQoc2IsIHBhcmVudF9maS0mZ3Q7bm9kZWlkLCAwLCAmYW1wO3Jvb3RfYXR0ciwgMCwgMCwKIAkJCSBmdXNlX2dldF9ldmljdF9jdHIoZm0tJmd0O2ZjKSk7CiYjNDM7CWlmICghcm9vdCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwogCS8qCiAJICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZAogCSAqIGl0cyBubG9va3VwIHNob3VsZCBub3QgYmUgaW5jcmVtZW50ZWQuICBmdXNlX2lnZXQoKSBkb2VzCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHl6aW5nIGEgRlVTRSBQYXRjaCBmb3IgUm9vdCBJbm9kZSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCB0byBgZnMvZnVzZS9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIGNydWNpYWwgY2hlY2suIEFmdGVyIGNhbGxpbmcgYGZ1c2VfaWdldGAg4oCTIHdoaWNoLCBhcyBJIHJlY2FsbCwgcmV0cmlldmVzIG9yIGNyZWF0ZXMgYW4gaW5vZGUgZnJvbSB0aGUgRlVTRSBmaWxlc3lzdGVtIOKAkyB0aGUgY29kZSBub3cgZXhwbGljaXRseSB2ZXJpZmllcyBpZiB0aGUgYHJvb3RgIHBvaW50ZXIgaXMgTlVMTC4gVGhlIHNpZ25pZmljYW5jZSBpcyBjbGVhcjogaWYgYGZ1c2VfaWdldGAgZmFpbHMsIGZvciBleGFtcGxlLCBkdWUgdG8gbWVtb3J5IGV4aGF1c3Rpb24gKGFtb25nIG90aGVyIHJlYXNvbnMpLCBgcm9vdGAgd2lsbCBiZSBOVUxMLiBJbiBzdWNoIGEgc2NlbmFyaW8sIHRoZSBwYXRjaCBpcyBkZXNpZ25lZCB0byBncmFjZWZ1bGx5IHJldHVybiBgLUVOT01FTWAsIGluZGljYXRpbmcgYW4gb3V0LW9mLW1lbW9yeSBlcnJvciwgcmF0aGVyIHRoYW4gY29udGludWluZyB3aXRoIHBvdGVudGlhbGx5IHVuZGVmaW5lZCBiZWhhdmlvci4gVGhpcyBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmU7IHByZXZlbnRpbmcgYSBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgY3JpdGljYWwgZm9yIHN0YWJpbGl0eS4gSXQmIzM5O3MgdGhlIHJpZ2h0IG1vdmUgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIHRoZSBpbml0aWFsIG1vdW50IHByb2Nlc3Mgb2YgYSBGVVNFIHN1Ym1vdW50LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyBzdXJyb3VuZGluZyBgZnVzZV9pZ2V0YCBhbmQgaG93IG1lbW9yeSBwcmVzc3VyZSBtYXkgaGF2ZSBiZWVuIGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYz0xNTk4PXN0YXRpYyB2b2lkIGZ1c2Vfc2JfZGVmYXVsdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTYxMy1cbmZzL2Z1c2UvaW5vZGUuYzoxNjE0OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9mdXNlL2lub2RlLmMtMTYxNS1cdFx0XHRcdCAgICBzdHJ1Y3QgZnVzZV9pbm9kZSAqcGFyZW50X2ZpKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0xNjc0PXN0YXRpYyBpbnQgZnVzZV9nZXRfdHJlZV9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjk0LVx0LyogSW5pdGlhbGl6ZSBzdXBlcmJsb2NrLCBtYWtpbmcgQG1wX2ZpIGl0cyByb290ICovXG5mcy9mdXNlL2lub2RlLmM6MTY5NTpcdGVyciA9IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzYiwgbXBfZmkpO1xuZnMvZnVzZS9pbm9kZS5jLTE2OTYtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZVU0UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBhZGRyZXNzZXMgYSBtaXNzaW5nIGBOVUxMYCBjaGVjayBvbiB0aGUgYHJvb3RgIHZhcmlhYmxlIHdpdGhpbiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBhZnRlciB0aGUgY2FsbCB0byBgZnVzZV9pZ2V0YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IGNsZWFyIGZpeCBmb3IgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIOKAkyBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkuIEdpdmVuIHRoZSBpbXBhY3QgY291bGQgYmUgZGF0YSBjb3JydXB0aW9uLCBwb3RlbnRpYWwgRE9TIG9yIGV2ZW4gYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIGlmIGNoYWluZWQsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBwcmlvcml0aXplLiBUaW1lIHRvIHB1bGwgdXAgdGhlIEZVU0UgY29uZmlndXJhdGlvbiBvcHRpb25zLCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIHNldCB1cCBmb3Igb3B0aW1hbCB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBUaGlzIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCB0byBoaXQgd2l0aCB0aGUgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYW5kIGl0IGxvb2tzIGxpa2UgYEZVU0VfRlNgIGlzIHRoZSBrZXkgdmFyaWFibGUgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBtb3VudGVkLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgLiBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIGhvbGRzIGNydWNpYWwgZGV0YWlscyBhYm91dCBob3cgdGhlIHN1cGVyYmxvY2sgaXMgY29uc3RydWN0ZWQgYW5kIHBvcHVsYXRlZCwgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIHNwZWNpZmljcyBvZiBoYW5kbGluZyBzdWJtb3VudHMgd2l0aGluIHRoZSBGVVNFIGVudmlyb25tZW50LiBJdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIGRhdGEgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBGVVNFIGZyYW1ld29yay4gVGhlbiwgSSBuZWVkIHRvIHNlZSB3aGF0IGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBkb2luZywgdG8gc2VlIGhvdyB0aGUgZmlsZSBzeXN0ZW0mIzM5O3Mgc3RydWN0dXJlIGlzIGJlaW5nIGNyZWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9nZXRfdHJlZV9zdWJtb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9MTYxND1zdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjczLS8qIEZpbGVzeXN0ZW0gY29udGV4dCBwcml2YXRlIGRhdGEgaG9sZHMgdGhlIEZVU0UgaW5vZGUgb2YgdGhlIG1vdW50IHBvaW50ICovXG5mcy9mdXNlL2lub2RlLmM6MTY3NDpzdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xNjc1LXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuZnMvZnVzZS9pbm9kZS5jOjE3MTI6XHQuZ2V0X3RyZWVcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcbmZzL2Z1c2UvaW5vZGUuYy0xNzEzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRlVTRSBTdWJtb3VudCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBGVVNFIGhhbmRsZXMgc3VibW91bnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgZW50cnkgcG9pbnQgd2hlbiBhIEZVU0Ugc3VibW91bnQgaXMgYmVpbmcgbW91bnRlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGZ1bmN0aW9uLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBzZWVtcyB0byBiZSBjYWxsZWQgZHVyaW5nIHRoZSBzdWJtb3VudCBwcm9jZXNzLiBIb3dldmVyLCBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBhbHNvIHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBhIGRlY2lzaW9uIGFib3V0IHRoZSBiZXN0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLgoKTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gVGhlbiwgaWRlYWxseSwgSSBzaG91bGQgcHJpb3JpdGl6ZSBhIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbiBvdmVyIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBsaWtlIHRoZXNlIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG1pZ2h0IGlubGluZSB0aGUgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWVhbnMgdGhleSB3b24mIzM5O3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBndWlkZWxpbmUuIFNvLCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgYWxzbyBzdGF0aWMhCgpBbHJpZ2h0LCBpdCBzZWVtcyBJIG5lZWQgdG8gcmV2aXNpdCBteSBhcHByb2FjaCBhbmQgZmluZCBhIGZ1bmN0aW9uIHRoYXQgYmV0dGVyIGZpdHMgdGhlIGNyaXRlcmlhLiBOb3csIEkgc2hvdWxkIGxvb2sgYXQgd2hlcmUgYGZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHNgIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfY29udGV4dF9zdWJtb3VudF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE3MTAtXG5mcy9mdXNlL2lub2RlLmM6MTcxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuZnMvZnVzZS9pbm9kZS5jLTE3MTItXHQuZ2V0X3RyZWVcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxNT1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xNzE2LXtcbmZzL2Z1c2UvaW5vZGUuYzoxNzE3Olx0ZnNjLVx1MDAzZW9wcyA9IFx1MDAyNmZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHM7XG5mcy9mdXNlL2lub2RlLmMtMTcxOC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCoqCgpSaWdodCwgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGUgZmFjdCB0aGF0IGl0IGlzbiYjMzk7dCBzdGF0aWMgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBpdCYjMzk7cyBkZWZpbmVkIGluLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VlIGV2ZXJ5d2hlcmUgdGhpcyB0aGluZyBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gd29ya3MgaW4gdGhlIGNvbnRleHQgb2Ygc3VibW91bnRzLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsZXIgYW5kIHRoZSBpbnB1dHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYW5kIGNvbnNpZGVyIGl0cyBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Z1c2VfaS5oPTEwNzg9Ym9vbCBmdXNlX21vdW50X3JlbW92ZShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pO1xuLS1cbmZzL2Z1c2UvZnVzZV9pLmgtMTA4Mi0gKi9cbmZzL2Z1c2UvZnVzZV9pLmg6MTA4MzppbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYyk7XG5mcy9mdXNlL2Z1c2VfaS5oLTEwODQtXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE3MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTcxNC1cbmZzL2Z1c2UvaW5vZGUuYzoxNzE1OmludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxuZnMvZnVzZS9pbm9kZS5jLTE3MTYte1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNzE5LX1cbmZzL2Z1c2UvaW5vZGUuYzoxNzIwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KTtcbmZzL2Z1c2UvaW5vZGUuYy0xNzIxLVxuLS1cbmZzL2Z1c2UvdmlydGlvX2ZzLmM9MTc2Nj1zdGF0aWMgaW50IHZpcnRpb19mc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL3ZpcnRpb19mcy5jLTE3NzAtXHRpZiAoZnNjLVx1MDAzZXB1cnBvc2UgPT0gRlNfQ09OVEVYVF9GT1JfU1VCTU9VTlQpXG5mcy9mdXNlL3ZpcnRpb19mcy5jOjE3NzE6XHRcdHJldHVybiBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChmc2MpO1xuZnMvZnVzZS92aXJ0aW9fZnMuYy0xNzcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgRnVzZSBGaWxlc3lzdGVtIENvbnRleHQqKgoKT2theSwgc28gYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBpcyBpbmRlZWQgZXhwb3J0ZWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNhbiB3b3JrIHdpdGggdGhhdC4gTm93LCB3YWl0IGEgbWludXRlLi4uIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YC4gVGhhdCYjMzk7cyBhIGNhbGxiYWNrLCBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgZnNfY29udGV4dF9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIFRoZSBWRlMgaXMgZ29pbmcgdG8gYmUgY2FsbGluZyB0aGF0LCBpc24mIzM5O3QgaXQ/IFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSB3b25kZXIsIHRob3VnaCwgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgb3IgYXJlYXMgd2hlcmUgSSBzaG91bGQgYmUgbG9va2luZy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBpbiBgZnMvZnVzZS9kaXIuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGlyLmM9NTAwPXN0YXRpYyBpbnQgZnVzZV9kZW50cnlfZGVsZXRlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9mdXNlL2Rpci5jLTUwOS0gKi9cbmZzL2Z1c2UvZGlyLmM6NTEwOnN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKmZ1c2VfZGVudHJ5X2F1dG9tb3VudChzdHJ1Y3QgcGF0aCAqcGF0aClcbmZzL2Z1c2UvZGlyLmMtNTExLXtcbi0tXG5mcy9mdXNlL2Rpci5jPTUyOT1jb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgZnVzZV9kZW50cnlfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9mdXNlL2Rpci5jLTUzMy1cdC5kX3JlbGVhc2VcdD0gZnVzZV9kZW50cnlfcmVsZWFzZSxcbmZzL2Z1c2UvZGlyLmM6NTM0Olx0LmRfYXV0b21vdW50XHQ9IGZ1c2VfZGVudHJ5X2F1dG9tb3VudCxcbmZzL2Z1c2UvZGlyLmMtNTM1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHRoZSBzdWJqZWN0OgoKKipEaWdnaW5nIGludG8gdGhlIEF1dG9tb3VudCBUcmlnZ2VyKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYXV0b21vdW50IGJlaGF2aW9yLiBUaGUga2V5IHRyaWdnZXIsIHRoZSBvbmUgdGhhdCBraWNrcyBvZmYgdGhhdCB3aG9sZSBzdWJtb3VudCBwcm9jZXNzLi4uIHRoYXQmIzM5O3MgZ290IHRvIGJlIGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgLiBJdCYjMzk7cyBwcmV0dHkgbGlrZWx5LCBnaXZlbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQuIExldCYjMzk7cyBnZXQgcmlnaHQgaW50byBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmY19tb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kaXIuYz01MTA9c3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqZnVzZV9kZW50cnlfYXV0b21vdW50KHN0cnVjdCBwYXRoICpwYXRoKVxuLS1cbmZzL2Z1c2UvZGlyLmMtNTIzLVx0LyogQ3JlYXRlIHRoZSBzdWJtb3VudCAqL1xuZnMvZnVzZS9kaXIuYzo1MjQ6XHRtbnQgPSBmY19tb3VudChmc2MpO1xuZnMvZnVzZS9kaXIuYy01MjUtXHRwdXRfZnNfY29udGV4dChmc2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMxCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRlVTRSBTdWJtb3VudHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IEZVU0Ugc3VibW91bnRzIGFyZSBoYW5kbGVkLiBJIHNlZSB0aGF0IGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlbSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGZvY3VzLiBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGFuZCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgYXJlIGFsc28gcmVsZXZhbnQuIEV2ZW4gdGhvdWdoIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBzdGF0aWMsIGJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIGl0IGNhbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkLCBzbyB0aGVyZSYjMzk7cyBhIHN0YW5kYWxvbmUgdmVyc2lvbi4gVGhhdCYjMzk7cyBnb29kLgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBpbmxpbmVkLiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBmcm9tIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCwgc28gaXQgbWlnaHQgYmUuIEluIHRoYXQgY2FzZSwgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGlzIHRoZSBiZXR0ZXIgc3ltYm9sIHRvIHVzZS4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNvbmZpZ3VyYXRpb24td2lzZS4gYEZVU0VfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBJIHRoaW5rLgoKV2FpdCBhIHNlY29uZOKApiBgdmlydGlvX2ZzX2luaXRfZnNfY29udGV4dGAgY2FsbHMgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBhcyB3ZWxsLiBUaGF0IGNvdWxkIG1lYW4gdGhhdCBgVklSVElPX0ZTYCBjb3VsZCBiZSBhbm90aGVyIGNvbmZpZyB0byBpbmNsdWRlLCBidXQgSSB0aGluayBgRlVTRV9GU2AgaXMgdGhlIG1haW4gb25lIHRvIGZvY3VzIG9uLgoKT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB0aGlzLiBUaW1lIHRvIHNldCB1cCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF90cmVlX3N1Ym1vdW50JiMzNDssCiAgICAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVzZV9pZ2V0KCkgaW4gZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KCkuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gbW91bnRpbmcgYSBGVVNFIHN1Ym1vdW50IGFuZCB0aGUgcm9vdCBpbm9kZSBhbGxvY2F0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X3RyZWVfc3VibW91bnQmIzM0OywKICAgICYjMzQ7ZnVzZV9kZW50cnlfYXV0b21vdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2OWZiZGM3MDZjNDkxOTA4ODZmOGY5ZmJkODMyMGRhZDg0ZTIyNTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDA0OjQwOjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jCmluZGV4IGQ5NzUwNzNjNjAyOTYuLjQ1NWM3ZmViYTA1NzUgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmMKQEAgLTE2MzksNiAmIzQzOzE2MzksOCBAQCBzdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCWZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoJmFtcDtyb290X2F0dHIsIHBhcmVudF9maSk7CiAJcm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLSZndDtub2RlaWQsIDAsICZhbXA7cm9vdF9hdHRyLCAwLCAwLAogCQkJIGZ1c2VfZ2V0X2V2aWN0X2N0cihmbS0mZ3Q7ZmMpKTsKJiM0MzsJaWYgKCFyb290KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJLyoKIAkgKiBUaGlzIGlub2RlIGlzIGp1c3QgYSBkdXBsaWNhdGUsIHNvIGl0IGlzIG5vdCBsb29rZWQgdXAgYW5kCiAJICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTUKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1c2UgU3VibW91bnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGZzL2Z1c2UvaW5vZGUuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogYSBOVUxMIHBvaW50ZXIgY2hlY2sgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldCgpYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBgcm9vdGAgaW5vZGUgcG9pbnRlciByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgIGlzIE5VTEwuIElmIGl0IGlzLCB0aGUgcGF0Y2ggcmV0dXJucyBgLUVOT01FTWAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2gsIHdoaWxlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gc2FmZXR5IG5ldHMgbGlrZSBwYWdlIGZhdWx0cyBvciBLQVNBTiwgaXMgZ29vZCBwcmFjdGljZSB0byBleHBsaWNpdGx5IGhhbmRsZS4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBjcmFzaCBieSBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBvdXQtb2YtbWVtb3J5IGVycm9yIGluIHRoZSBldmVudCBgZnVzZV9pZ2V0KClgIGZhaWxzIHRvIGFsbG9jYXRlIGEgbmV3IGlub2RlLgoKTGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFJpZ2h0LCBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBpbnZva2VkIGR1cmluZyB0aGUgbW91bnRpbmcgb2YgYSBGdXNlIHN1Ym1vdW50LiBSZXR1cm5pbmcgYC1FTk9NRU1gIHdoZW4gd2UgZmFpbCB0byBnZXQgdGhlIHJvb3QgaW5vZGUgaXMgZW50aXJlbHkgY29uc2lzdGVudCB3aXRoIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHByaW5jaXBsZXMuIE5vdGhpbmcgdW50b3dhcmQ7IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRvIHdvcnJ5IGFib3V0IGhlcmUuCgpTbywgdGhpcyBwYXRjaCBpcyBjbGVhbiwgc3RyYWlnaHRmb3J3YXJkLCBhbmQgaW1wcm92ZXMgcm9idXN0bmVzcy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgYHJvb3RgIGlub2RlIHJldHVybmVkIGJ5IGBmdXNlX2lnZXQoKWAuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd291bGQgb2NjdXIsIHdoaWNoIGlzIGVhc2lseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IHJlbWFpbiB1bmluaXRpYWxpemVkLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU2LjcyMDA4NTU0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzgwNTA1Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF90cmVlX3N1Ym1vdW50XCIsXG4gICAgXCJmdXNlX2RlbnRyeV9hdXRvbW91bnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU2LjcyMDA5NzEzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTU3NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY5ZmJkYzcwNmM0OTE5MDg4NmY4ZjlmYmQ4MzIwZGFkODRlMjI1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyA4IDA0OjQwOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xcbmluZGV4IGQ5NzUwNzNjNjAyOTYuLjQ1NWM3ZmViYTA1NzUgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXFxuKysrIGIvZnMvZnVzZS9pbm9kZS5jXFxuQEAgLTE2MzksNiArMTYzOSw4IEBAIHN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuIFxcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXFx1MDAyNnJvb3RfYXR0ciwgcGFyZW50X2ZpKTtcXG4gXFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVxcdTAwM2Vub2RlaWQsIDAsIFxcdTAwMjZyb290X2F0dHIsIDAsIDAsXFxuIFxcdFxcdFxcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXFx1MDAzZWZjKSk7XFxuK1xcdGlmICghcm9vdClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdC8qXFxuIFxcdCAqIFRoaXMgaW5vZGUgaXMganVzdCBhIGR1cGxpY2F0ZSwgc28gaXQgaXMgbm90IGxvb2tlZCB1cCBhbmRcXG4gXFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDA6NTcuMTY5NjMwMjA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjkwODE1NTgyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X3RyZWVfc3VibW91bnRcIixcbiAgICBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xuaW5kZXggZDk3NTA3M2M2MDI5Ni4uNDU1YzdmZWJhMDU3NSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xuKysrIGIvZnMvZnVzZS9pbm9kZS5jXG5AQCAtMTYzOSw2ICsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbitcdGlmICghcm9vdClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHQvKlxuIFx0ICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZFxuIFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU3LjE2OTYzMTY2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTI4MDkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgYSBGVVNFIFBhdGNoIGZvciBSb290IElub2RlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgYmVlbiBhcHBsaWVkIHRvIGBmcy9mdXNlL2lub2RlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrLiBBZnRlciBjYWxsaW5nIGBmdXNlX2lnZXRgIOKAkyB3aGljaCwgYXMgSSByZWNhbGwsIHJldHJpZXZlcyBvciBjcmVhdGVzIGFuIGlub2RlIGZyb20gdGhlIEZVU0UgZmlsZXN5c3RlbSDigJMgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgdmVyaWZpZXMgaWYgdGhlIGByb290YCBwb2ludGVyIGlzIE5VTEwuIFRoZSBzaWduaWZpY2FuY2UgaXMgY2xlYXI6IGlmIGBmdXNlX2lnZXRgIGZhaWxzLCBmb3IgZXhhbXBsZSwgZHVlIHRvIG1lbW9yeSBleGhhdXN0aW9uIChhbW9uZyBvdGhlciByZWFzb25zKSwgYHJvb3RgIHdpbGwgYmUgTlVMTC4gSW4gc3VjaCBhIHNjZW5hcmlvLCB0aGUgcGF0Y2ggaXMgZGVzaWduZWQgdG8gZ3JhY2VmdWxseSByZXR1cm4gYC1FTk9NRU1gLCBpbmRpY2F0aW5nIGFuIG91dC1vZi1tZW1vcnkgZXJyb3IsIHJhdGhlciB0aGFuIGNvbnRpbnVpbmcgd2l0aCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IuIFRoaXMgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlOyBwcmV2ZW50aW5nIGEgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIGlzIGNyaXRpY2FsIGZvciBzdGFiaWxpdHkuIEl0J3MgdGhlIHJpZ2h0IG1vdmUgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIHRoZSBpbml0aWFsIG1vdW50IHByb2Nlc3Mgb2YgYSBGVVNFIHN1Ym1vdW50LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyBzdXJyb3VuZGluZyBgZnVzZV9pZ2V0YCBhbmQgaG93IG1lbW9yeSBwcmVzc3VyZSBtYXkgaGF2ZSBiZWVuIGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjAwLjgyMjQ0NDYzM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM5MzMxMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2lub2RlLmM9MTU5OD1zdGF0aWMgdm9pZCBmdXNlX3NiX2RlZmF1bHRzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTYxMy1cXG5mcy9mdXNlL2lub2RlLmM6MTYxNDpzdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2Z1c2UvaW5vZGUuYy0xNjE1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZnVzZV9pbm9kZSAqcGFyZW50X2ZpKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTY5NC1cXHQvKiBJbml0aWFsaXplIHN1cGVyYmxvY2ssIG1ha2luZyBAbXBfZmkgaXRzIHJvb3QgKi9cXG5mcy9mdXNlL2lub2RlLmM6MTY5NTpcXHRlcnIgPSBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc2IsIG1wX2ZpKTtcXG5mcy9mdXNlL2lub2RlLmMtMTY5Ni1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjAxLjE4NjM4MzQ3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTg3NTY4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRlVTRSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSXQgYWRkcmVzc2VzIGEgbWlzc2luZyBgTlVMTGAgY2hlY2sgb24gdGhlIGByb290YCB2YXJpYWJsZSB3aXRoaW4gYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBjbGVhciBmaXggZm9yIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSDigJMgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBHaXZlbiB0aGUgaW1wYWN0IGNvdWxkIGJlIGRhdGEgY29ycnVwdGlvbiwgcG90ZW50aWFsIERPUyBvciBldmVuIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiBpZiBjaGFpbmVkLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gcHJpb3JpdGl6ZS4gVGltZSB0byBwdWxsIHVwIHRoZSBGVVNFIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBzZXQgdXAgZm9yIG9wdGltYWwgdGVzdGluZyBhbmQgZnV6emluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZ29vZCB0YXJnZXQgdG8gaGl0IHdpdGggdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNC4xMDUxNDI3MTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEyMzA5NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNC4xNTYzNzk1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjA4NDY5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGFuZCBpdCBsb29rcyBsaWtlIGBGVVNFX0ZTYCBpcyB0aGUga2V5IHZhcmlhYmxlIHRvIHBheSBhdHRlbnRpb24gdG8uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBtb3VudGVkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGludG8gYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAuIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gaG9sZHMgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IGhvdyB0aGUgc3VwZXJibG9jayBpcyBjb25zdHJ1Y3RlZCBhbmQgcG9wdWxhdGVkLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB0aGUgc3BlY2lmaWNzIG9mIGhhbmRsaW5nIHN1Ym1vdW50cyB3aXRoaW4gdGhlIEZVU0UgZW52aXJvbm1lbnQuIEl0J2xsIHJldmVhbCBob3cgdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbSBkYXRhIGlzIGludGVncmF0ZWQgaW50byB0aGUgRlVTRSBmcmFtZXdvcmsuIFRoZW4sIEkgbmVlZCB0byBzZWUgd2hhdCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgZG9pbmcsIHRvIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtJ3Mgc3RydWN0dXJlIGlzIGJlaW5nIGNyZWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNy4wMTcyMzAwMTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5ODU0NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfdHJlZV9zdWJtb3VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE2MTQ9c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjczLS8qIEZpbGVzeXN0ZW0gY29udGV4dCBwcml2YXRlIGRhdGEgaG9sZHMgdGhlIEZVU0UgaW5vZGUgb2YgdGhlIG1vdW50IHBvaW50ICovXFxuZnMvZnVzZS9pbm9kZS5jOjE2NzQ6c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuZnMvZnVzZS9pbm9kZS5jLTE2NzUte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE3MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcXG5mcy9mdXNlL2lub2RlLmM6MTcxMjpcXHQuZ2V0X3RyZWVcXHQ9IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQsXFxuZnMvZnVzZS9pbm9kZS5jLTE3MTMtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MDcuMDY1MjIxNDMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2MzYyODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRlVTRSBTdWJtb3VudCBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgRlVTRSBoYW5kbGVzIHN1Ym1vdW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGVudHJ5IHBvaW50IHdoZW4gYSBGVVNFIHN1Ym1vdW50IGlzIGJlaW5nIG1vdW50ZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGZ1bmN0aW9uLCBiZWNhdXNlIHRoYXQncyB3aGF0IHNlZW1zIHRvIGJlIGNhbGxlZCBkdXJpbmcgdGhlIHN1Ym1vdW50IHByb2Nlc3MuIEhvd2V2ZXIsIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGlzIGFsc28gcmVsZXZhbnQuIEkgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24gYWJvdXQgdGhlIGJlc3QgZnVuY3Rpb24gdG8gZm9jdXMgb24uXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSBpZiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBzdGF0aWMuIFllcywgaXQgaXMuIFRoZW4sIGlkZWFsbHksIEkgc2hvdWxkIHByaW9yaXRpemUgYSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZnVuY3Rpb24gb3ZlciBpbnRlcm5hbCwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgbGlrZSB0aGVzZSBiZWNhdXNlIHRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgdGhlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkgd29uJ3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0J3MgYSBnb29kIGd1aWRlbGluZS4gU28sIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBhbHNvIHN0YXRpYyFcblxuQWxyaWdodCwgaXQgc2VlbXMgSSBuZWVkIHRvIHJldmlzaXQgbXkgYXBwcm9hY2ggYW5kIGZpbmQgYSBmdW5jdGlvbiB0aGF0IGJldHRlciBmaXRzIHRoZSBjcml0ZXJpYS4gTm93LCBJIHNob3VsZCBsb29rIGF0IHdoZXJlIGBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzYCBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjExLjEyODg1MzE4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5MDIxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxMC1cXG5mcy9mdXNlL2lub2RlLmM6MTcxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzEyLVxcdC5nZXRfdHJlZVxcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzE1PWludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE2LXtcXG5mcy9mdXNlL2lub2RlLmM6MTcxNzpcXHRmc2MtXFx1MDAzZW9wcyA9IFxcdTAwMjZmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzE4LVxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToxMS4xNzc3NjE2ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyNzIxNTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgKipcblxuUmlnaHQsIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAgaXNuJ3Qgc3RhdGljLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZSBmYWN0IHRoYXQgaXQgaXNuJ3Qgc3RhdGljIG1lYW5zIGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBpdCdzIGRlZmluZWQgaW4uIExldCdzIHRyYWNlIHRob3NlIGNhbGxzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UgYW5kIHNlZSBldmVyeXdoZXJlIHRoaXMgdGhpbmcgaXMgdXNlZC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIEZVU0UgZmlsZXN5c3RlbSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHdvcmtzIGluIHRoZSBjb250ZXh0IG9mIHN1Ym1vdW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsZXIgYW5kIHRoZSBpbnB1dHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYW5kIGNvbnNpZGVyIGl0cyBzY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjE0LjAwNDk4MDIxN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2ODc5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9mdXNlX2kuaD0xMDc4PWJvb2wgZnVzZV9tb3VudF9yZW1vdmUoc3RydWN0IGZ1c2VfbW91bnQgKmZtKTtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9pLmgtMTA4Mi0gKi9cXG5mcy9mdXNlL2Z1c2VfaS5oOjEwODM6aW50IGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpO1xcbmZzL2Z1c2UvZnVzZV9pLmgtMTA4NC1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHMgPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxNC1cXG5mcy9mdXNlL2lub2RlLmM6MTcxNTppbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG5mcy9mdXNlL2lub2RlLmMtMTcxNi17XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxOS19XFxuZnMvZnVzZS9pbm9kZS5jOjE3MjA6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzIxLVxcbi0tXFxuZnMvZnVzZS92aXJ0aW9fZnMuYz0xNzY2PXN0YXRpYyBpbnQgdmlydGlvX2ZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbi0tXFxuZnMvZnVzZS92aXJ0aW9fZnMuYy0xNzcwLVxcdGlmIChmc2MtXFx1MDAzZXB1cnBvc2UgPT0gRlNfQ09OVEVYVF9GT1JfU1VCTU9VTlQpXFxuZnMvZnVzZS92aXJ0aW9fZnMuYzoxNzcxOlxcdFxcdHJldHVybiBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChmc2MpO1xcbmZzL2Z1c2UvdmlydGlvX2ZzLmMtMTc3Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MTQuMDUzNjczMjIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzUyNDU2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgRnVzZSBGaWxlc3lzdGVtIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGlzIGluZGVlZCBleHBvcnRlZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gd29yayB3aXRoIHRoYXQuIE5vdywgd2FpdCBhIG1pbnV0ZS4uLiBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAuIFRoYXQncyBhIGNhbGxiYWNrLCBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgZnNfY29udGV4dF9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIFRoZSBWRlMgaXMgZ29pbmcgdG8gYmUgY2FsbGluZyB0aGF0LCBpc24ndCBpdD8gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdvbmRlciwgdGhvdWdoLCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcG90ZW50aWFsIGVudHJ5IHBvaW50cyBvciBhcmVhcyB3aGVyZSBJIHNob3VsZCBiZSBsb29raW5nLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBpbiBgZnMvZnVzZS9kaXIuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToxNy4yODg5MjIwMTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzQ2ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rpci5jPTUwMD1zdGF0aWMgaW50IGZ1c2VfZGVudHJ5X2RlbGV0ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9mdXNlL2Rpci5jLTUwOS0gKi9cXG5mcy9mdXNlL2Rpci5jOjUxMDpzdGF0aWMgc3RydWN0IHZmc21vdW50ICpmdXNlX2RlbnRyeV9hdXRvbW91bnQoc3RydWN0IHBhdGggKnBhdGgpXFxuZnMvZnVzZS9kaXIuYy01MTEte1xcbi0tXFxuZnMvZnVzZS9kaXIuYz01Mjk9Y29uc3Qgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIGZ1c2VfZGVudHJ5X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9mdXNlL2Rpci5jLTUzMy1cXHQuZF9yZWxlYXNlXFx0PSBmdXNlX2RlbnRyeV9yZWxlYXNlLFxcbmZzL2Z1c2UvZGlyLmM6NTM0OlxcdC5kX2F1dG9tb3VudFxcdD0gZnVzZV9kZW50cnlfYXV0b21vdW50LFxcbmZzL2Z1c2UvZGlyLmMtNTM1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjE3LjMzNzY3NDU5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxNjk5OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGUgc3ViamVjdDpcblxuKipEaWdnaW5nIGludG8gdGhlIEF1dG9tb3VudCBUcmlnZ2VyKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGF1dG9tb3VudCBiZWhhdmlvci4gVGhlIGtleSB0cmlnZ2VyLCB0aGUgb25lIHRoYXQga2lja3Mgb2ZmIHRoYXQgd2hvbGUgc3VibW91bnQgcHJvY2Vzcy4uLiB0aGF0J3MgZ290IHRvIGJlIGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgLiBJdCdzIHByZXR0eSBsaWtlbHksIGdpdmVuIHRoZSBuYW1pbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gYGZ1c2VfZGVudHJ5X2F1dG9tb3VudGAgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MjAuMTU5Mzc3MzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTAyNTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZjX21vdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kaXIuYz01MTA9c3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqZnVzZV9kZW50cnlfYXV0b21vdW50KHN0cnVjdCBwYXRoICpwYXRoKVxcbi0tXFxuZnMvZnVzZS9kaXIuYy01MjMtXFx0LyogQ3JlYXRlIHRoZSBzdWJtb3VudCAqL1xcbmZzL2Z1c2UvZGlyLmM6NTI0OlxcdG1udCA9IGZjX21vdW50KGZzYyk7XFxuZnMvZnVzZS9kaXIuYy01MjUtXFx0cHV0X2ZzX2NvbnRleHQoZnNjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MjAuMjA3Mjg1ODM1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTQ0NDI4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZVU0UgU3VibW91bnRzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgRlVTRSBzdWJtb3VudHMgYXJlIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGZ1c2VfZGVudHJ5X2F1dG9tb3VudGAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGVtLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBmb2N1cy4gYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBhbmQgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGFyZSBhbHNvIHJlbGV2YW50LiBFdmVuIHRob3VnaCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBpdCBjYW4ndCBiZSBmdWxseSBpbmxpbmVkLCBzbyB0aGVyZSdzIGEgc3RhbmRhbG9uZSB2ZXJzaW9uLiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgbGV0J3Mgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgaXMgaW5saW5lZC4gSXQncyBvbmx5IGNhbGxlZCBmcm9tIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCwgc28gaXQgbWlnaHQgYmUuIEluIHRoYXQgY2FzZSwgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGlzIHRoZSBiZXR0ZXIgc3ltYm9sIHRvIHVzZS5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNvbmZpZ3VyYXRpb24td2lzZS4gYEZVU0VfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBJIHRoaW5rLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGB2aXJ0aW9fZnNfaW5pdF9mc19jb250ZXh0YCBjYWxscyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGFzIHdlbGwuIFRoYXQgY291bGQgbWVhbiB0aGF0IGBWSVJUSU9fRlNgIGNvdWxkIGJlIGFub3RoZXIgY29uZmlnIHRvIGluY2x1ZGUsIGJ1dCBJIHRoaW5rIGBGVVNFX0ZTYCBpcyB0aGUgbWFpbiBvbmUgdG8gZm9jdXMgb24uXG5cbk9rYXksIEkgdGhpbmsgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGltZSB0byBzZXQgdXAgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzEsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjI2LjE2MTczMTQzNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDUzODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9nZXRfdHJlZV9zdWJtb3VudFwiLFxuICAgIFwiZnVzZV9kZW50cnlfYXV0b21vdW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X3RyZWVfc3VibW91bnRcIixcbiAgICBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToyNi4yNTExOTI5NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDkzODc5NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToyNi4yNTE4NTA4ODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjI0ODcyNTg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgYHJvb3RgIGlub2RlIHJldHVybmVkIGJ5IGBmdXNlX2lnZXQoKWAuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd291bGQgb2NjdXIsIHdoaWNoIGlzIGVhc2lseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IHJlbWFpbiB1bmluaXRpYWxpemVkLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xuaW5kZXggZDk3NTA3M2M2MDI5Ni4uNDU1YzdmZWJhMDU3NSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xuKysrIGIvZnMvZnVzZS9pbm9kZS5jXG5AQCAtMTYzOSw2ICsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbitcdGlmICghcm9vdClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHQvKlxuIFx0ICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZFxuIFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjI2LjI1MTg1MTgyN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjQ4NzAzOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1c2UgU3VibW91bnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9mdXNlL2lub2RlLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogYSBOVUxMIHBvaW50ZXIgY2hlY2sgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldCgpYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBgcm9vdGAgaW5vZGUgcG9pbnRlciByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgIGlzIE5VTEwuIElmIGl0IGlzLCB0aGUgcGF0Y2ggcmV0dXJucyBgLUVOT01FTWAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cblRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCB3aGljaCwgd2hpbGUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIHNhZmV0eSBuZXRzIGxpa2UgcGFnZSBmYXVsdHMgb3IgS0FTQU4sIGlzIGdvb2QgcHJhY3RpY2UgdG8gZXhwbGljaXRseSBoYW5kbGUuIFdlJ3JlIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBjcmFzaCBieSBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBvdXQtb2YtbWVtb3J5IGVycm9yIGluIHRoZSBldmVudCBgZnVzZV9pZ2V0KClgIGZhaWxzIHRvIGFsbG9jYXRlIGEgbmV3IGlub2RlLlxuXG5MZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBSaWdodCwgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgaXMgaW52b2tlZCBkdXJpbmcgdGhlIG1vdW50aW5nIG9mIGEgRnVzZSBzdWJtb3VudC4gUmV0dXJuaW5nIGAtRU5PTUVNYCB3aGVuIHdlIGZhaWwgdG8gZ2V0IHRoZSByb290IGlub2RlIGlzIGVudGlyZWx5IGNvbnNpc3RlbnQgd2l0aCBzdGFuZGFyZCBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50IHByaW5jaXBsZXMuIE5vdGhpbmcgdW50b3dhcmQ7IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRvIHdvcnJ5IGFib3V0IGhlcmUuXG5cblNvLCB0aGlzIHBhdGNoIGlzIGNsZWFuLCBzdHJhaWdodGZvcndhcmQsIGFuZCBpbXByb3ZlcyByb2J1c3RuZXNzLiBJJ20gZ29pbmcgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTUsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MzIuNTAwNTU4ODQ5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIHRoZSBgcm9vdGAgaW5vZGUgcmV0dXJuZWQgYnkgYGZ1c2VfaWdldCgpYC4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3b3VsZCBvY2N1ciwgd2hpY2ggaXMgZWFzaWx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgbWlnaHQgcmVtYWluIHVuaW5pdGlhbGl6ZWQuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowd5jd8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 04:19:50 +0000 UTC FinishedAt: 2026-08-08 04:41:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "881d0564-538b-4ec2-bef3-d636d47bff0c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_get_tree_submount", "fuse_dentry_automount" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF90cmVlX3N1Ym1vdW50JiMzNDssCiAgICAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjY5ZmJkYzcwNmM0OTE5MDg4NmY4ZjlmYmQ4MzIwZGFkODRlMjI1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDQ6NDA6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jXG5pbmRleCBkOTc1MDczYzYwMjk2Li40NTVjN2ZlYmEwNTc1IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmNcbkBAIC0xNjM5LDYgJiM0MzsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbiYjNDM7XHRpZiAoIXJvb3QpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcdC8qXG4gXHQgKiBUaGlzIGlub2RlIGlzIGp1c3QgYSBkdXBsaWNhdGUsIHNvIGl0IGlzIG5vdCBsb29rZWQgdXAgYW5kXG4gXHQgKiBpdHMgbmxvb2t1cCBzaG91bGQgbm90IGJlIGluY3JlbWVudGVkLiAgZnVzZV9pZ2V0KCkgZG9lc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfdHJlZV9zdWJtb3VudCYjMzQ7LAogICAgJiMzNDtmdXNlX2RlbnRyeV9hdXRvbW91bnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuYwppbmRleCBkOTc1MDczYzYwMjk2Li40NTVjN2ZlYmEwNTc1IDEwMDY0NAotLS0gYS9mcy9mdXNlL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9pbm9kZS5jCkBAIC0xNjM5LDYgJiM0MzsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAlmdXNlX2ZpbGxfYXR0cl9mcm9tX2lub2RlKCZhbXA7cm9vdF9hdHRyLCBwYXJlbnRfZmkpOwogCXJvb3QgPSBmdXNlX2lnZXQoc2IsIHBhcmVudF9maS0mZ3Q7bm9kZWlkLCAwLCAmYW1wO3Jvb3RfYXR0ciwgMCwgMCwKIAkJCSBmdXNlX2dldF9ldmljdF9jdHIoZm0tJmd0O2ZjKSk7CiYjNDM7CWlmICghcm9vdCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwogCS8qCiAJICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZAogCSAqIGl0cyBubG9va3VwIHNob3VsZCBub3QgYmUgaW5jcmVtZW50ZWQuICBmdXNlX2lnZXQoKSBkb2VzCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHl6aW5nIGEgRlVTRSBQYXRjaCBmb3IgUm9vdCBJbm9kZSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCB0byBgZnMvZnVzZS9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIGNydWNpYWwgY2hlY2suIEFmdGVyIGNhbGxpbmcgYGZ1c2VfaWdldGAg4oCTIHdoaWNoLCBhcyBJIHJlY2FsbCwgcmV0cmlldmVzIG9yIGNyZWF0ZXMgYW4gaW5vZGUgZnJvbSB0aGUgRlVTRSBmaWxlc3lzdGVtIOKAkyB0aGUgY29kZSBub3cgZXhwbGljaXRseSB2ZXJpZmllcyBpZiB0aGUgYHJvb3RgIHBvaW50ZXIgaXMgTlVMTC4gVGhlIHNpZ25pZmljYW5jZSBpcyBjbGVhcjogaWYgYGZ1c2VfaWdldGAgZmFpbHMsIGZvciBleGFtcGxlLCBkdWUgdG8gbWVtb3J5IGV4aGF1c3Rpb24gKGFtb25nIG90aGVyIHJlYXNvbnMpLCBgcm9vdGAgd2lsbCBiZSBOVUxMLiBJbiBzdWNoIGEgc2NlbmFyaW8sIHRoZSBwYXRjaCBpcyBkZXNpZ25lZCB0byBncmFjZWZ1bGx5IHJldHVybiBgLUVOT01FTWAsIGluZGljYXRpbmcgYW4gb3V0LW9mLW1lbW9yeSBlcnJvciwgcmF0aGVyIHRoYW4gY29udGludWluZyB3aXRoIHBvdGVudGlhbGx5IHVuZGVmaW5lZCBiZWhhdmlvci4gVGhpcyBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmU7IHByZXZlbnRpbmcgYSBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgY3JpdGljYWwgZm9yIHN0YWJpbGl0eS4gSXQmIzM5O3MgdGhlIHJpZ2h0IG1vdmUgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIHRoZSBpbml0aWFsIG1vdW50IHByb2Nlc3Mgb2YgYSBGVVNFIHN1Ym1vdW50LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyBzdXJyb3VuZGluZyBgZnVzZV9pZ2V0YCBhbmQgaG93IG1lbW9yeSBwcmVzc3VyZSBtYXkgaGF2ZSBiZWVuIGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYz0xNTk4PXN0YXRpYyB2b2lkIGZ1c2Vfc2JfZGVmYXVsdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTYxMy1cbmZzL2Z1c2UvaW5vZGUuYzoxNjE0OnN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9mdXNlL2lub2RlLmMtMTYxNS1cdFx0XHRcdCAgICBzdHJ1Y3QgZnVzZV9pbm9kZSAqcGFyZW50X2ZpKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYz0xNjc0PXN0YXRpYyBpbnQgZnVzZV9nZXRfdHJlZV9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjk0LVx0LyogSW5pdGlhbGl6ZSBzdXBlcmJsb2NrLCBtYWtpbmcgQG1wX2ZpIGl0cyByb290ICovXG5mcy9mdXNlL2lub2RlLmM6MTY5NTpcdGVyciA9IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzYiwgbXBfZmkpO1xuZnMvZnVzZS9pbm9kZS5jLTE2OTYtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZVU0UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBhZGRyZXNzZXMgYSBtaXNzaW5nIGBOVUxMYCBjaGVjayBvbiB0aGUgYHJvb3RgIHZhcmlhYmxlIHdpdGhpbiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBhZnRlciB0aGUgY2FsbCB0byBgZnVzZV9pZ2V0YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IGNsZWFyIGZpeCBmb3IgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIOKAkyBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkuIEdpdmVuIHRoZSBpbXBhY3QgY291bGQgYmUgZGF0YSBjb3JydXB0aW9uLCBwb3RlbnRpYWwgRE9TIG9yIGV2ZW4gYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIGlmIGNoYWluZWQsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgbmVlZCB0byBwcmlvcml0aXplLiBUaW1lIHRvIHB1bGwgdXAgdGhlIEZVU0UgY29uZmlndXJhdGlvbiBvcHRpb25zLCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIHNldCB1cCBmb3Igb3B0aW1hbCB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBUaGlzIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCB0byBoaXQgd2l0aCB0aGUgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYW5kIGl0IGxvb2tzIGxpa2UgYEZVU0VfRlNgIGlzIHRoZSBrZXkgdmFyaWFibGUgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBtb3VudGVkLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgLiBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIGhvbGRzIGNydWNpYWwgZGV0YWlscyBhYm91dCBob3cgdGhlIHN1cGVyYmxvY2sgaXMgY29uc3RydWN0ZWQgYW5kIHBvcHVsYXRlZCwgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIHNwZWNpZmljcyBvZiBoYW5kbGluZyBzdWJtb3VudHMgd2l0aGluIHRoZSBGVVNFIGVudmlyb25tZW50LiBJdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIGRhdGEgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBGVVNFIGZyYW1ld29yay4gVGhlbiwgSSBuZWVkIHRvIHNlZSB3aGF0IGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBkb2luZywgdG8gc2VlIGhvdyB0aGUgZmlsZSBzeXN0ZW0mIzM5O3Mgc3RydWN0dXJlIGlzIGJlaW5nIGNyZWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9nZXRfdHJlZV9zdWJtb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmM9MTYxND1zdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNjczLS8qIEZpbGVzeXN0ZW0gY29udGV4dCBwcml2YXRlIGRhdGEgaG9sZHMgdGhlIEZVU0UgaW5vZGUgb2YgdGhlIG1vdW50IHBvaW50ICovXG5mcy9mdXNlL2lub2RlLmM6MTY3NDpzdGF0aWMgaW50IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xNjc1LXtcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuZnMvZnVzZS9pbm9kZS5jOjE3MTI6XHQuZ2V0X3RyZWVcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcbmZzL2Z1c2UvaW5vZGUuYy0xNzEzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRlVTRSBTdWJtb3VudCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBGVVNFIGhhbmRsZXMgc3VibW91bnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgZW50cnkgcG9pbnQgd2hlbiBhIEZVU0Ugc3VibW91bnQgaXMgYmVpbmcgbW91bnRlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGZ1bmN0aW9uLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBzZWVtcyB0byBiZSBjYWxsZWQgZHVyaW5nIHRoZSBzdWJtb3VudCBwcm9jZXNzLiBIb3dldmVyLCBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBhbHNvIHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBhIGRlY2lzaW9uIGFib3V0IHRoZSBiZXN0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLgoKTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gVGhlbiwgaWRlYWxseSwgSSBzaG91bGQgcHJpb3JpdGl6ZSBhIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbiBvdmVyIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBsaWtlIHRoZXNlIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG1pZ2h0IGlubGluZSB0aGUgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWVhbnMgdGhleSB3b24mIzM5O3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBndWlkZWxpbmUuIFNvLCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgYWxzbyBzdGF0aWMhCgpBbHJpZ2h0LCBpdCBzZWVtcyBJIG5lZWQgdG8gcmV2aXNpdCBteSBhcHByb2FjaCBhbmQgZmluZCBhIGZ1bmN0aW9uIHRoYXQgYmV0dGVyIGZpdHMgdGhlIGNyaXRlcmlhLiBOb3csIEkgc2hvdWxkIGxvb2sgYXQgd2hlcmUgYGZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHNgIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfY29udGV4dF9zdWJtb3VudF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXG4tLVxuZnMvZnVzZS9pbm9kZS5jLTE3MTAtXG5mcy9mdXNlL2lub2RlLmM6MTcxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xuZnMvZnVzZS9pbm9kZS5jLTE3MTItXHQuZ2V0X3RyZWVcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcbi0tXG5mcy9mdXNlL2lub2RlLmM9MTcxNT1pbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbmZzL2Z1c2UvaW5vZGUuYy0xNzE2LXtcbmZzL2Z1c2UvaW5vZGUuYzoxNzE3Olx0ZnNjLVx1MDAzZW9wcyA9IFx1MDAyNmZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHM7XG5mcy9mdXNlL2lub2RlLmMtMTcxOC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCoqCgpSaWdodCwgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGUgZmFjdCB0aGF0IGl0IGlzbiYjMzk7dCBzdGF0aWMgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBpdCYjMzk7cyBkZWZpbmVkIGluLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VlIGV2ZXJ5d2hlcmUgdGhpcyB0aGluZyBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gd29ya3MgaW4gdGhlIGNvbnRleHQgb2Ygc3VibW91bnRzLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsZXIgYW5kIHRoZSBpbnB1dHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYW5kIGNvbnNpZGVyIGl0cyBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Z1c2VfaS5oPTEwNzg9Ym9vbCBmdXNlX21vdW50X3JlbW92ZShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pO1xuLS1cbmZzL2Z1c2UvZnVzZV9pLmgtMTA4Mi0gKi9cbmZzL2Z1c2UvZnVzZV9pLmg6MTA4MzppbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYyk7XG5mcy9mdXNlL2Z1c2VfaS5oLTEwODQtXG4tLVxuZnMvZnVzZS9pbm9kZS5jPTE3MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcbi0tXG5mcy9mdXNlL2lub2RlLmMtMTcxNC1cbmZzL2Z1c2UvaW5vZGUuYzoxNzE1OmludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxuZnMvZnVzZS9pbm9kZS5jLTE3MTYte1xuLS1cbmZzL2Z1c2UvaW5vZGUuYy0xNzE5LX1cbmZzL2Z1c2UvaW5vZGUuYzoxNzIwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KTtcbmZzL2Z1c2UvaW5vZGUuYy0xNzIxLVxuLS1cbmZzL2Z1c2UvdmlydGlvX2ZzLmM9MTc2Nj1zdGF0aWMgaW50IHZpcnRpb19mc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcbi0tXG5mcy9mdXNlL3ZpcnRpb19mcy5jLTE3NzAtXHRpZiAoZnNjLVx1MDAzZXB1cnBvc2UgPT0gRlNfQ09OVEVYVF9GT1JfU1VCTU9VTlQpXG5mcy9mdXNlL3ZpcnRpb19mcy5jOjE3NzE6XHRcdHJldHVybiBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChmc2MpO1xuZnMvZnVzZS92aXJ0aW9fZnMuYy0xNzcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgRnVzZSBGaWxlc3lzdGVtIENvbnRleHQqKgoKT2theSwgc28gYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBpcyBpbmRlZWQgZXhwb3J0ZWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNhbiB3b3JrIHdpdGggdGhhdC4gTm93LCB3YWl0IGEgbWludXRlLi4uIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YC4gVGhhdCYjMzk7cyBhIGNhbGxiYWNrLCBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgZnNfY29udGV4dF9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIFRoZSBWRlMgaXMgZ29pbmcgdG8gYmUgY2FsbGluZyB0aGF0LCBpc24mIzM5O3QgaXQ/IFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSB3b25kZXIsIHRob3VnaCwgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgb3IgYXJlYXMgd2hlcmUgSSBzaG91bGQgYmUgbG9va2luZy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBpbiBgZnMvZnVzZS9kaXIuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGlyLmM9NTAwPXN0YXRpYyBpbnQgZnVzZV9kZW50cnlfZGVsZXRlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9mdXNlL2Rpci5jLTUwOS0gKi9cbmZzL2Z1c2UvZGlyLmM6NTEwOnN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKmZ1c2VfZGVudHJ5X2F1dG9tb3VudChzdHJ1Y3QgcGF0aCAqcGF0aClcbmZzL2Z1c2UvZGlyLmMtNTExLXtcbi0tXG5mcy9mdXNlL2Rpci5jPTUyOT1jb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgZnVzZV9kZW50cnlfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9mdXNlL2Rpci5jLTUzMy1cdC5kX3JlbGVhc2VcdD0gZnVzZV9kZW50cnlfcmVsZWFzZSxcbmZzL2Z1c2UvZGlyLmM6NTM0Olx0LmRfYXV0b21vdW50XHQ9IGZ1c2VfZGVudHJ5X2F1dG9tb3VudCxcbmZzL2Z1c2UvZGlyLmMtNTM1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHRoZSBzdWJqZWN0OgoKKipEaWdnaW5nIGludG8gdGhlIEF1dG9tb3VudCBUcmlnZ2VyKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYXV0b21vdW50IGJlaGF2aW9yLiBUaGUga2V5IHRyaWdnZXIsIHRoZSBvbmUgdGhhdCBraWNrcyBvZmYgdGhhdCB3aG9sZSBzdWJtb3VudCBwcm9jZXNzLi4uIHRoYXQmIzM5O3MgZ290IHRvIGJlIGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgLiBJdCYjMzk7cyBwcmV0dHkgbGlrZWx5LCBnaXZlbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQuIExldCYjMzk7cyBnZXQgcmlnaHQgaW50byBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmY19tb3VudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kaXIuYz01MTA9c3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqZnVzZV9kZW50cnlfYXV0b21vdW50KHN0cnVjdCBwYXRoICpwYXRoKVxuLS1cbmZzL2Z1c2UvZGlyLmMtNTIzLVx0LyogQ3JlYXRlIHRoZSBzdWJtb3VudCAqL1xuZnMvZnVzZS9kaXIuYzo1MjQ6XHRtbnQgPSBmY19tb3VudChmc2MpO1xuZnMvZnVzZS9kaXIuYy01MjUtXHRwdXRfZnNfY29udGV4dChmc2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMxCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRlVTRSBTdWJtb3VudHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IEZVU0Ugc3VibW91bnRzIGFyZSBoYW5kbGVkLiBJIHNlZSB0aGF0IGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlbSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGZvY3VzLiBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGFuZCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgYXJlIGFsc28gcmVsZXZhbnQuIEV2ZW4gdGhvdWdoIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBzdGF0aWMsIGJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIGl0IGNhbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkLCBzbyB0aGVyZSYjMzk7cyBhIHN0YW5kYWxvbmUgdmVyc2lvbi4gVGhhdCYjMzk7cyBnb29kLgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBpbmxpbmVkLiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBmcm9tIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCwgc28gaXQgbWlnaHQgYmUuIEluIHRoYXQgY2FzZSwgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGlzIHRoZSBiZXR0ZXIgc3ltYm9sIHRvIHVzZS4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNvbmZpZ3VyYXRpb24td2lzZS4gYEZVU0VfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBJIHRoaW5rLgoKV2FpdCBhIHNlY29uZOKApiBgdmlydGlvX2ZzX2luaXRfZnNfY29udGV4dGAgY2FsbHMgYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBhcyB3ZWxsLiBUaGF0IGNvdWxkIG1lYW4gdGhhdCBgVklSVElPX0ZTYCBjb3VsZCBiZSBhbm90aGVyIGNvbmZpZyB0byBpbmNsdWRlLCBidXQgSSB0aGluayBgRlVTRV9GU2AgaXMgdGhlIG1haW4gb25lIHRvIGZvY3VzIG9uLgoKT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB0aGlzLiBUaW1lIHRvIHNldCB1cCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF90cmVlX3N1Ym1vdW50JiMzNDssCiAgICAmIzM0O2Z1c2VfZGVudHJ5X2F1dG9tb3VudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVzZV9pZ2V0KCkgaW4gZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KCkuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gbW91bnRpbmcgYSBGVVNFIHN1Ym1vdW50IGFuZCB0aGUgcm9vdCBpbm9kZSBhbGxvY2F0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X3RyZWVfc3VibW91bnQmIzM0OywKICAgICYjMzQ7ZnVzZV9kZW50cnlfYXV0b21vdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNDo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2OWZiZGM3MDZjNDkxOTA4ODZmOGY5ZmJkODMyMGRhZDg0ZTIyNTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDA0OjQwOjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9pbm9kZS5jIGIvZnMvZnVzZS9pbm9kZS5jCmluZGV4IGQ5NzUwNzNjNjAyOTYuLjQ1NWM3ZmViYTA1NzUgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2lub2RlLmMKQEAgLTE2MzksNiAmIzQzOzE2MzksOCBAQCBzdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCWZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoJmFtcDtyb290X2F0dHIsIHBhcmVudF9maSk7CiAJcm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLSZndDtub2RlaWQsIDAsICZhbXA7cm9vdF9hdHRyLCAwLCAwLAogCQkJIGZ1c2VfZ2V0X2V2aWN0X2N0cihmbS0mZ3Q7ZmMpKTsKJiM0MzsJaWYgKCFyb290KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJLyoKIAkgKiBUaGlzIGlub2RlIGlzIGp1c3QgYSBkdXBsaWNhdGUsIHNvIGl0IGlzIG5vdCBsb29rZWQgdXAgYW5kCiAJICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTUKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1c2UgU3VibW91bnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGZzL2Z1c2UvaW5vZGUuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogYSBOVUxMIHBvaW50ZXIgY2hlY2sgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldCgpYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBgcm9vdGAgaW5vZGUgcG9pbnRlciByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgIGlzIE5VTEwuIElmIGl0IGlzLCB0aGUgcGF0Y2ggcmV0dXJucyBgLUVOT01FTWAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2gsIHdoaWxlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gc2FmZXR5IG5ldHMgbGlrZSBwYWdlIGZhdWx0cyBvciBLQVNBTiwgaXMgZ29vZCBwcmFjdGljZSB0byBleHBsaWNpdGx5IGhhbmRsZS4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBjcmFzaCBieSBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBvdXQtb2YtbWVtb3J5IGVycm9yIGluIHRoZSBldmVudCBgZnVzZV9pZ2V0KClgIGZhaWxzIHRvIGFsbG9jYXRlIGEgbmV3IGlub2RlLgoKTGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFJpZ2h0LCBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBpbnZva2VkIGR1cmluZyB0aGUgbW91bnRpbmcgb2YgYSBGdXNlIHN1Ym1vdW50LiBSZXR1cm5pbmcgYC1FTk9NRU1gIHdoZW4gd2UgZmFpbCB0byBnZXQgdGhlIHJvb3QgaW5vZGUgaXMgZW50aXJlbHkgY29uc2lzdGVudCB3aXRoIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHByaW5jaXBsZXMuIE5vdGhpbmcgdW50b3dhcmQ7IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRvIHdvcnJ5IGFib3V0IGhlcmUuCgpTbywgdGhpcyBwYXRjaCBpcyBjbGVhbiwgc3RyYWlnaHRmb3J3YXJkLCBhbmQgaW1wcm92ZXMgcm9idXN0bmVzcy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgYHJvb3RgIGlub2RlIHJldHVybmVkIGJ5IGBmdXNlX2lnZXQoKWAuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd291bGQgb2NjdXIsIHdoaWNoIGlzIGVhc2lseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IHJlbWFpbiB1bmluaXRpYWxpemVkLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU2LjcyMDA4NTU0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzgwNTA1Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF90cmVlX3N1Ym1vdW50XCIsXG4gICAgXCJmdXNlX2RlbnRyeV9hdXRvbW91bnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU2LjcyMDA5NzEzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTU3NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY5ZmJkYzcwNmM0OTE5MDg4NmY4ZjlmYmQ4MzIwZGFkODRlMjI1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyA4IDA0OjQwOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xcbmluZGV4IGQ5NzUwNzNjNjAyOTYuLjQ1NWM3ZmViYTA1NzUgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9pbm9kZS5jXFxuKysrIGIvZnMvZnVzZS9pbm9kZS5jXFxuQEAgLTE2MzksNiArMTYzOSw4IEBAIHN0YXRpYyBpbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuIFxcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXFx1MDAyNnJvb3RfYXR0ciwgcGFyZW50X2ZpKTtcXG4gXFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVxcdTAwM2Vub2RlaWQsIDAsIFxcdTAwMjZyb290X2F0dHIsIDAsIDAsXFxuIFxcdFxcdFxcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXFx1MDAzZWZjKSk7XFxuK1xcdGlmICghcm9vdClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdC8qXFxuIFxcdCAqIFRoaXMgaW5vZGUgaXMganVzdCBhIGR1cGxpY2F0ZSwgc28gaXQgaXMgbm90IGxvb2tlZCB1cCBhbmRcXG4gXFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDA6NTcuMTY5NjMwMjA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjkwODE1NTgyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X3RyZWVfc3VibW91bnRcIixcbiAgICBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xuaW5kZXggZDk3NTA3M2M2MDI5Ni4uNDU1YzdmZWJhMDU3NSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xuKysrIGIvZnMvZnVzZS9pbm9kZS5jXG5AQCAtMTYzOSw2ICsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbitcdGlmICghcm9vdClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHQvKlxuIFx0ICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZFxuIFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQwOjU3LjE2OTYzMTY2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTI4MDkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgYSBGVVNFIFBhdGNoIGZvciBSb290IElub2RlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgYmVlbiBhcHBsaWVkIHRvIGBmcy9mdXNlL2lub2RlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrLiBBZnRlciBjYWxsaW5nIGBmdXNlX2lnZXRgIOKAkyB3aGljaCwgYXMgSSByZWNhbGwsIHJldHJpZXZlcyBvciBjcmVhdGVzIGFuIGlub2RlIGZyb20gdGhlIEZVU0UgZmlsZXN5c3RlbSDigJMgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgdmVyaWZpZXMgaWYgdGhlIGByb290YCBwb2ludGVyIGlzIE5VTEwuIFRoZSBzaWduaWZpY2FuY2UgaXMgY2xlYXI6IGlmIGBmdXNlX2lnZXRgIGZhaWxzLCBmb3IgZXhhbXBsZSwgZHVlIHRvIG1lbW9yeSBleGhhdXN0aW9uIChhbW9uZyBvdGhlciByZWFzb25zKSwgYHJvb3RgIHdpbGwgYmUgTlVMTC4gSW4gc3VjaCBhIHNjZW5hcmlvLCB0aGUgcGF0Y2ggaXMgZGVzaWduZWQgdG8gZ3JhY2VmdWxseSByZXR1cm4gYC1FTk9NRU1gLCBpbmRpY2F0aW5nIGFuIG91dC1vZi1tZW1vcnkgZXJyb3IsIHJhdGhlciB0aGFuIGNvbnRpbnVpbmcgd2l0aCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IuIFRoaXMgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlOyBwcmV2ZW50aW5nIGEgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIGlzIGNyaXRpY2FsIGZvciBzdGFiaWxpdHkuIEl0J3MgdGhlIHJpZ2h0IG1vdmUgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIHRoZSBpbml0aWFsIG1vdW50IHByb2Nlc3Mgb2YgYSBGVVNFIHN1Ym1vdW50LiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyBzdXJyb3VuZGluZyBgZnVzZV9pZ2V0YCBhbmQgaG93IG1lbW9yeSBwcmVzc3VyZSBtYXkgaGF2ZSBiZWVuIGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjAwLjgyMjQ0NDYzM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM5MzMxMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2lub2RlLmM9MTU5OD1zdGF0aWMgdm9pZCBmdXNlX3NiX2RlZmF1bHRzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTYxMy1cXG5mcy9mdXNlL2lub2RlLmM6MTYxNDpzdGF0aWMgaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2Z1c2UvaW5vZGUuYy0xNjE1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZnVzZV9pbm9kZSAqcGFyZW50X2ZpKVxcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTY5NC1cXHQvKiBJbml0aWFsaXplIHN1cGVyYmxvY2ssIG1ha2luZyBAbXBfZmkgaXRzIHJvb3QgKi9cXG5mcy9mdXNlL2lub2RlLmM6MTY5NTpcXHRlcnIgPSBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc2IsIG1wX2ZpKTtcXG5mcy9mdXNlL2lub2RlLmMtMTY5Ni1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjAxLjE4NjM4MzQ3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTg3NTY4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRlVTRSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSXQgYWRkcmVzc2VzIGEgbWlzc2luZyBgTlVMTGAgY2hlY2sgb24gdGhlIGByb290YCB2YXJpYWJsZSB3aXRoaW4gYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBjbGVhciBmaXggZm9yIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSDigJMgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBHaXZlbiB0aGUgaW1wYWN0IGNvdWxkIGJlIGRhdGEgY29ycnVwdGlvbiwgcG90ZW50aWFsIERPUyBvciBldmVuIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiBpZiBjaGFpbmVkLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gcHJpb3JpdGl6ZS4gVGltZSB0byBwdWxsIHVwIHRoZSBGVVNFIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBzZXQgdXAgZm9yIG9wdGltYWwgdGVzdGluZyBhbmQgZnV6emluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZ29vZCB0YXJnZXQgdG8gaGl0IHdpdGggdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNC4xMDUxNDI3MTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEyMzA5NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNC4xNTYzNzk1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjA4NDY5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEZVU0UgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGFuZCBpdCBsb29rcyBsaWtlIGBGVVNFX0ZTYCBpcyB0aGUga2V5IHZhcmlhYmxlIHRvIHBheSBhdHRlbnRpb24gdG8uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRlVTRSBmaWxlc3lzdGVtIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBtb3VudGVkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGludG8gYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAuIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gaG9sZHMgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IGhvdyB0aGUgc3VwZXJibG9jayBpcyBjb25zdHJ1Y3RlZCBhbmQgcG9wdWxhdGVkLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB0aGUgc3BlY2lmaWNzIG9mIGhhbmRsaW5nIHN1Ym1vdW50cyB3aXRoaW4gdGhlIEZVU0UgZW52aXJvbm1lbnQuIEl0J2xsIHJldmVhbCBob3cgdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbSBkYXRhIGlzIGludGVncmF0ZWQgaW50byB0aGUgRlVTRSBmcmFtZXdvcmsuIFRoZW4sIEkgbmVlZCB0byBzZWUgd2hhdCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgZG9pbmcsIHRvIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtJ3Mgc3RydWN0dXJlIGlzIGJlaW5nIGNyZWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MTowNy4wMTcyMzAwMTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5ODU0NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfdHJlZV9zdWJtb3VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE2MTQ9c3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYy0xNjczLS8qIEZpbGVzeXN0ZW0gY29udGV4dCBwcml2YXRlIGRhdGEgaG9sZHMgdGhlIEZVU0UgaW5vZGUgb2YgdGhlIG1vdW50IHBvaW50ICovXFxuZnMvZnVzZS9pbm9kZS5jOjE2NzQ6c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuZnMvZnVzZS9pbm9kZS5jLTE2NzUte1xcbi0tXFxuZnMvZnVzZS9pbm9kZS5jPTE3MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wcyA9IHtcXG5mcy9mdXNlL2lub2RlLmM6MTcxMjpcXHQuZ2V0X3RyZWVcXHQ9IGZ1c2VfZ2V0X3RyZWVfc3VibW91bnQsXFxuZnMvZnVzZS9pbm9kZS5jLTE3MTMtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MDcuMDY1MjIxNDMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2MzYyODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRlVTRSBTdWJtb3VudCBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgRlVTRSBoYW5kbGVzIHN1Ym1vdW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGVudHJ5IHBvaW50IHdoZW4gYSBGVVNFIHN1Ym1vdW50IGlzIGJlaW5nIG1vdW50ZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGZ1bmN0aW9uLCBiZWNhdXNlIHRoYXQncyB3aGF0IHNlZW1zIHRvIGJlIGNhbGxlZCBkdXJpbmcgdGhlIHN1Ym1vdW50IHByb2Nlc3MuIEhvd2V2ZXIsIGBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnRgIGlzIGFsc28gcmVsZXZhbnQuIEkgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24gYWJvdXQgdGhlIGJlc3QgZnVuY3Rpb24gdG8gZm9jdXMgb24uXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSBpZiBgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50YCBpcyBzdGF0aWMuIFllcywgaXQgaXMuIFRoZW4sIGlkZWFsbHksIEkgc2hvdWxkIHByaW9yaXRpemUgYSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZnVuY3Rpb24gb3ZlciBpbnRlcm5hbCwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgbGlrZSB0aGVzZSBiZWNhdXNlIHRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgdGhlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkgd29uJ3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0J3MgYSBnb29kIGd1aWRlbGluZS4gU28sIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCBpcyBhbHNvIHN0YXRpYyFcblxuQWxyaWdodCwgaXQgc2VlbXMgSSBuZWVkIHRvIHJldmlzaXQgbXkgYXBwcm9hY2ggYW5kIGZpbmQgYSBmdW5jdGlvbiB0aGF0IGJldHRlciBmaXRzIHRoZSBjcml0ZXJpYS4gTm93LCBJIHNob3VsZCBsb29rIGF0IHdoZXJlIGBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzYCBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjExLjEyODg1MzE4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5MDIxNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9jb250ZXh0X3N1Ym1vdW50X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9pbm9kZS5jPTE2NzQ9c3RhdGljIGludCBmdXNlX2dldF90cmVlX3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpXFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxMC1cXG5mcy9mdXNlL2lub2RlLmM6MTcxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzID0ge1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzEyLVxcdC5nZXRfdHJlZVxcdD0gZnVzZV9nZXRfdHJlZV9zdWJtb3VudCxcXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzE1PWludCBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbmZzL2Z1c2UvaW5vZGUuYy0xNzE2LXtcXG5mcy9mdXNlL2lub2RlLmM6MTcxNzpcXHRmc2MtXFx1MDAzZW9wcyA9IFxcdTAwMjZmdXNlX2NvbnRleHRfc3VibW91bnRfb3BzO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzE4LVxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToxMS4xNzc3NjE2ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyNzIxNTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgKipcblxuUmlnaHQsIGBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudGAgaXNuJ3Qgc3RhdGljLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZSBmYWN0IHRoYXQgaXQgaXNuJ3Qgc3RhdGljIG1lYW5zIGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBpdCdzIGRlZmluZWQgaW4uIExldCdzIHRyYWNlIHRob3NlIGNhbGxzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UgYW5kIHNlZSBldmVyeXdoZXJlIHRoaXMgdGhpbmcgaXMgdXNlZC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIEZVU0UgZmlsZXN5c3RlbSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHdvcmtzIGluIHRoZSBjb250ZXh0IG9mIHN1Ym1vdW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsZXIgYW5kIHRoZSBpbnB1dHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYW5kIGNvbnNpZGVyIGl0cyBzY29wZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjE0LjAwNDk4MDIxN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2ODc5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9mdXNlX2kuaD0xMDc4PWJvb2wgZnVzZV9tb3VudF9yZW1vdmUoc3RydWN0IGZ1c2VfbW91bnQgKmZtKTtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9pLmgtMTA4Mi0gKi9cXG5mcy9mdXNlL2Z1c2VfaS5oOjEwODM6aW50IGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmc2MpO1xcbmZzL2Z1c2UvZnVzZV9pLmgtMTA4NC1cXG4tLVxcbmZzL2Z1c2UvaW5vZGUuYz0xNzExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGZ1c2VfY29udGV4dF9zdWJtb3VudF9vcHMgPSB7XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxNC1cXG5mcy9mdXNlL2lub2RlLmM6MTcxNTppbnQgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZzYylcXG5mcy9mdXNlL2lub2RlLmMtMTcxNi17XFxuLS1cXG5mcy9mdXNlL2lub2RlLmMtMTcxOS19XFxuZnMvZnVzZS9pbm9kZS5jOjE3MjA6RVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnQpO1xcbmZzL2Z1c2UvaW5vZGUuYy0xNzIxLVxcbi0tXFxuZnMvZnVzZS92aXJ0aW9fZnMuYz0xNzY2PXN0YXRpYyBpbnQgdmlydGlvX2ZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZnNjKVxcbi0tXFxuZnMvZnVzZS92aXJ0aW9fZnMuYy0xNzcwLVxcdGlmIChmc2MtXFx1MDAzZXB1cnBvc2UgPT0gRlNfQ09OVEVYVF9GT1JfU1VCTU9VTlQpXFxuZnMvZnVzZS92aXJ0aW9fZnMuYzoxNzcxOlxcdFxcdHJldHVybiBmdXNlX2luaXRfZnNfY29udGV4dF9zdWJtb3VudChmc2MpO1xcbmZzL2Z1c2UvdmlydGlvX2ZzLmMtMTc3Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MTQuMDUzNjczMjIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzUyNDU2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgRnVzZSBGaWxlc3lzdGVtIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGlzIGluZGVlZCBleHBvcnRlZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gd29yayB3aXRoIHRoYXQuIE5vdywgd2FpdCBhIG1pbnV0ZS4uLiBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAuIFRoYXQncyBhIGNhbGxiYWNrLCBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgZnNfY29udGV4dF9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIFRoZSBWRlMgaXMgZ29pbmcgdG8gYmUgY2FsbGluZyB0aGF0LCBpc24ndCBpdD8gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdvbmRlciwgdGhvdWdoLCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcG90ZW50aWFsIGVudHJ5IHBvaW50cyBvciBhcmVhcyB3aGVyZSBJIHNob3VsZCBiZSBsb29raW5nLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayBgZnVzZV9kZW50cnlfYXV0b21vdW50YCBpbiBgZnMvZnVzZS9kaXIuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToxNy4yODg5MjIwMTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzQ2ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rpci5jPTUwMD1zdGF0aWMgaW50IGZ1c2VfZGVudHJ5X2RlbGV0ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9mdXNlL2Rpci5jLTUwOS0gKi9cXG5mcy9mdXNlL2Rpci5jOjUxMDpzdGF0aWMgc3RydWN0IHZmc21vdW50ICpmdXNlX2RlbnRyeV9hdXRvbW91bnQoc3RydWN0IHBhdGggKnBhdGgpXFxuZnMvZnVzZS9kaXIuYy01MTEte1xcbi0tXFxuZnMvZnVzZS9kaXIuYz01Mjk9Y29uc3Qgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIGZ1c2VfZGVudHJ5X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9mdXNlL2Rpci5jLTUzMy1cXHQuZF9yZWxlYXNlXFx0PSBmdXNlX2RlbnRyeV9yZWxlYXNlLFxcbmZzL2Z1c2UvZGlyLmM6NTM0OlxcdC5kX2F1dG9tb3VudFxcdD0gZnVzZV9kZW50cnlfYXV0b21vdW50LFxcbmZzL2Z1c2UvZGlyLmMtNTM1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjE3LjMzNzY3NDU5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxNjk5OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGUgc3ViamVjdDpcblxuKipEaWdnaW5nIGludG8gdGhlIEF1dG9tb3VudCBUcmlnZ2VyKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGF1dG9tb3VudCBiZWhhdmlvci4gVGhlIGtleSB0cmlnZ2VyLCB0aGUgb25lIHRoYXQga2lja3Mgb2ZmIHRoYXQgd2hvbGUgc3VibW91bnQgcHJvY2Vzcy4uLiB0aGF0J3MgZ290IHRvIGJlIGBmdXNlX2RlbnRyeV9hdXRvbW91bnRgLiBJdCdzIHByZXR0eSBsaWtlbHksIGdpdmVuIHRoZSBuYW1pbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gYGZ1c2VfZGVudHJ5X2F1dG9tb3VudGAgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MjAuMTU5Mzc3MzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTAyNTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZjX21vdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kaXIuYz01MTA9c3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqZnVzZV9kZW50cnlfYXV0b21vdW50KHN0cnVjdCBwYXRoICpwYXRoKVxcbi0tXFxuZnMvZnVzZS9kaXIuYy01MjMtXFx0LyogQ3JlYXRlIHRoZSBzdWJtb3VudCAqL1xcbmZzL2Z1c2UvZGlyLmM6NTI0OlxcdG1udCA9IGZjX21vdW50KGZzYyk7XFxuZnMvZnVzZS9kaXIuYy01MjUtXFx0cHV0X2ZzX2NvbnRleHQoZnNjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MjAuMjA3Mjg1ODM1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTQ0NDI4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZVU0UgU3VibW91bnRzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgRlVTRSBzdWJtb3VudHMgYXJlIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGZ1c2VfZGVudHJ5X2F1dG9tb3VudGAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGVtLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBmb2N1cy4gYGZ1c2VfaW5pdF9mc19jb250ZXh0X3N1Ym1vdW50YCBhbmQgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGFyZSBhbHNvIHJlbGV2YW50LiBFdmVuIHRob3VnaCBgZnVzZV9nZXRfdHJlZV9zdWJtb3VudGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBpdCBjYW4ndCBiZSBmdWxseSBpbmxpbmVkLCBzbyB0aGVyZSdzIGEgc3RhbmRhbG9uZSB2ZXJzaW9uLiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgbGV0J3Mgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgaXMgaW5saW5lZC4gSXQncyBvbmx5IGNhbGxlZCBmcm9tIGBmdXNlX2dldF90cmVlX3N1Ym1vdW50YCwgc28gaXQgbWlnaHQgYmUuIEluIHRoYXQgY2FzZSwgYGZ1c2VfZ2V0X3RyZWVfc3VibW91bnRgIGlzIHRoZSBiZXR0ZXIgc3ltYm9sIHRvIHVzZS5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNvbmZpZ3VyYXRpb24td2lzZS4gYEZVU0VfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBJIHRoaW5rLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGB2aXJ0aW9fZnNfaW5pdF9mc19jb250ZXh0YCBjYWxscyBgZnVzZV9pbml0X2ZzX2NvbnRleHRfc3VibW91bnRgIGFzIHdlbGwuIFRoYXQgY291bGQgbWVhbiB0aGF0IGBWSVJUSU9fRlNgIGNvdWxkIGJlIGFub3RoZXIgY29uZmlnIHRvIGluY2x1ZGUsIGJ1dCBJIHRoaW5rIGBGVVNFX0ZTYCBpcyB0aGUgbWFpbiBvbmUgdG8gZm9jdXMgb24uXG5cbk9rYXksIEkgdGhpbmsgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGltZSB0byBzZXQgdXAgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzEsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjI2LjE2MTczMTQzNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDUzODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9nZXRfdHJlZV9zdWJtb3VudFwiLFxuICAgIFwiZnVzZV9kZW50cnlfYXV0b21vdW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1c2VfaWdldCgpIGluIGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudCgpLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIG1vdW50aW5nIGEgRlVTRSBzdWJtb3VudCBhbmQgdGhlIHJvb3QgaW5vZGUgYWxsb2NhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X3RyZWVfc3VibW91bnRcIixcbiAgICBcImZ1c2VfZGVudHJ5X2F1dG9tb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBmdXNlX2lnZXQoKSBpbiBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoKS4gVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBtb3VudGluZyBhIEZVU0Ugc3VibW91bnQgYW5kIHRoZSByb290IGlub2RlIGFsbG9jYXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToyNi4yNTExOTI5NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDkzODc5NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNDo0MToyNi4yNTE4NTA4ODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjI0ODcyNTg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrIGZvciB0aGUgYHJvb3RgIGlub2RlIHJldHVybmVkIGJ5IGBmdXNlX2lnZXQoKWAuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd291bGQgb2NjdXIsIHdoaWNoIGlzIGVhc2lseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IHJlbWFpbiB1bmluaXRpYWxpemVkLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjlmYmRjNzA2YzQ5MTkwODg2ZjhmOWZiZDgzMjBkYWQ4NGUyMjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNDo0MDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuY1xuaW5kZXggZDk3NTA3M2M2MDI5Ni4uNDU1YzdmZWJhMDU3NSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvaW5vZGUuY1xuKysrIGIvZnMvZnVzZS9pbm9kZS5jXG5AQCAtMTYzOSw2ICsxNjM5LDggQEAgc3RhdGljIGludCBmdXNlX2ZpbGxfc3VwZXJfc3VibW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdGZ1c2VfZmlsbF9hdHRyX2Zyb21faW5vZGUoXHUwMDI2cm9vdF9hdHRyLCBwYXJlbnRfZmkpO1xuIFx0cm9vdCA9IGZ1c2VfaWdldChzYiwgcGFyZW50X2ZpLVx1MDAzZW5vZGVpZCwgMCwgXHUwMDI2cm9vdF9hdHRyLCAwLCAwLFxuIFx0XHRcdCBmdXNlX2dldF9ldmljdF9jdHIoZm0tXHUwMDNlZmMpKTtcbitcdGlmICghcm9vdClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHQvKlxuIFx0ICogVGhpcyBpbm9kZSBpcyBqdXN0IGEgZHVwbGljYXRlLCBzbyBpdCBpcyBub3QgbG9va2VkIHVwIGFuZFxuIFx0ICogaXRzIG5sb29rdXAgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZC4gIGZ1c2VfaWdldCgpIGRvZXNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA0OjQxOjI2LjI1MTg1MTgyN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjQ4NzAzOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1c2UgU3VibW91bnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBmcy9mdXNlL2lub2RlLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogYSBOVUxMIHBvaW50ZXIgY2hlY2sgYWZ0ZXIgdGhlIGNhbGwgdG8gYGZ1c2VfaWdldCgpYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBgcm9vdGAgaW5vZGUgcG9pbnRlciByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgIGlzIE5VTEwuIElmIGl0IGlzLCB0aGUgcGF0Y2ggcmV0dXJucyBgLUVOT01FTWAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cblRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCB3aGljaCwgd2hpbGUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIHNhZmV0eSBuZXRzIGxpa2UgcGFnZSBmYXVsdHMgb3IgS0FTQU4sIGlzIGdvb2QgcHJhY3RpY2UgdG8gZXhwbGljaXRseSBoYW5kbGUuIFdlJ3JlIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBjcmFzaCBieSBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBvdXQtb2YtbWVtb3J5IGVycm9yIGluIHRoZSBldmVudCBgZnVzZV9pZ2V0KClgIGZhaWxzIHRvIGFsbG9jYXRlIGEgbmV3IGlub2RlLlxuXG5MZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBSaWdodCwgYGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudGAgaXMgaW52b2tlZCBkdXJpbmcgdGhlIG1vdW50aW5nIG9mIGEgRnVzZSBzdWJtb3VudC4gUmV0dXJuaW5nIGAtRU5PTUVNYCB3aGVuIHdlIGZhaWwgdG8gZ2V0IHRoZSByb290IGlub2RlIGlzIGVudGlyZWx5IGNvbnNpc3RlbnQgd2l0aCBzdGFuZGFyZCBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50IHByaW5jaXBsZXMuIE5vdGhpbmcgdW50b3dhcmQ7IG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRvIHdvcnJ5IGFib3V0IGhlcmUuXG5cblNvLCB0aGlzIHBhdGNoIGlzIGNsZWFuLCBzdHJhaWdodGZvcndhcmQsIGFuZCBpbXByb3ZlcyByb2J1c3RuZXNzLiBJJ20gZ29pbmcgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTUsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDQ6NDE6MzIuNTAwNTU4ODQ5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIHRoZSBgcm9vdGAgaW5vZGUgcmV0dXJuZWQgYnkgYGZ1c2VfaWdldCgpYC4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3b3VsZCBvY2N1ciwgd2hpY2ggaXMgZWFzaWx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgbWlnaHQgcmVtYWluIHVuaW5pdGlhbGl6ZWQuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgdGhlIGByb290YCBpbm9kZSByZXR1cm5lZCBieSBgZnVzZV9pZ2V0KClgLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdvdWxkIG9jY3VyLCB3aGljaCBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtaWdodCByZW1haW4gdW5pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowd5jd8[1] Phase: Succeeded StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 04:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 04:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2] Phase: Succeeded StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 04:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-08 04:41:44 +0000 UTC FinishedAt: 2026-08-08 04:41:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd5jd8/series-workflowd5jd8-convert-artifact-2250328586/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-08 04:41:54 +0000 UTC FinishedAt: 2026-08-08 04:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-08 04:41:54 +0000 UTC FinishedAt: 2026-08-08 04:58:54 +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:*ee28fd8b-4e60-4937-bdc9-bee76cde148d,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-workflowd5jd8/series-workflowd5jd8-convert-artifact-2250328586/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": "94c7c79d-f16e-4748-8eb7-41f71f120894", "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-workflowd5jd8/series-workflowd5jd8-build-action-2951869688/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-08 04:41:54 +0000 UTC FinishedAt: 2026-08-08 04:58:44 +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:*ee28fd8b-4e60-4937-bdc9-bee76cde148d,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-workflowd5jd8/series-workflowd5jd8-convert-artifact-2250328586/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": "94c7c79d-f16e-4748-8eb7-41f71f120894", "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-workflowd5jd8/series-workflowd5jd8-build-action-2951869688/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-08 04:58:54 +0000 UTC FinishedAt: 2026-08-08 04:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-08 04:58:54 +0000 UTC FinishedAt: 2026-08-08 04:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-08 04:58:54 +0000 UTC FinishedAt: 2026-08-08 04:59:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-08 04:58:54 +0000 UTC FinishedAt: 2026-08-08 04:58:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd5jd8/series-workflowd5jd8-convert-artifact-1691485349/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-08 04:59:04 +0000 UTC FinishedAt: 2026-08-08 05:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-08 04:59:04 +0000 UTC FinishedAt: 2026-08-08 05:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94c7c79d-f16e-4748-8eb7-41f71f120894,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-workflowd5jd8/series-workflowd5jd8-build-action-2951869688/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-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-08 05:01:23 +0000 UTC FinishedAt: 2026-08-08 05:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-08 05:01:23 +0000 UTC FinishedAt: 2026-08-08 05:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-08 05:01:23 +0000 UTC FinishedAt: 2026-08-08 05:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-08 05:01:23 +0000 UTC FinishedAt: 2026-08-08 05:17:50 +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:*ee28fd8b-4e60-4937-bdc9-bee76cde148d,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-workflowd5jd8/series-workflowd5jd8-convert-artifact-1691485349/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": "2b13fc55-7788-4183-8e52-e22e67486af2", "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-workflowd5jd8/series-workflowd5jd8-build-action-4228594929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-08 05:01:23 +0000 UTC FinishedAt: 2026-08-08 05:17:40 +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:*ee28fd8b-4e60-4937-bdc9-bee76cde148d,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-workflowd5jd8/series-workflowd5jd8-convert-artifact-1691485349/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": "2b13fc55-7788-4183-8e52-e22e67486af2", "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-workflowd5jd8/series-workflowd5jd8-build-action-4228594929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-08 05:17:50 +0000 UTC FinishedAt: 2026-08-08 05:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-08 05:17:50 +0000 UTC FinishedAt: 2026-08-08 05:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-08 05:17:50 +0000 UTC FinishedAt: 2026-08-08 05:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-08 05:17:50 +0000 UTC FinishedAt: 2026-08-08 05:19:54 +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:*2b13fc55-7788-4183-8e52-e22e67486af2,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-workflowd5jd8/series-workflowd5jd8-build-action-4228594929/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-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +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":["fuse_get_tree_submount","fuse_dentry_automount"],"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:*94c7c79d-f16e-4748-8eb7-41f71f120894,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2b13fc55-7788-4183-8e52-e22e67486af2,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-workflowd5jd8/series-workflowd5jd8-build-action-2951869688/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-workflowd5jd8/series-workflowd5jd8-build-action-4228594929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 05:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 05:20:07 +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":["fuse_get_tree_submount","fuse_dentry_automount"],"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-workflowd5jd8/series-workflowd5jd8-convert-artifact-3635219498/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 05:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 05:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-08 05:20:04 +0000 UTC FinishedAt: 2026-08-08 05:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-08 05:20:14 +0000 UTC FinishedAt: 2026-08-08 08:22:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5jd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_get_tree_submount","fuse_dentry_automount"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"881d0564-538b-4ec2-bef3-d636d47bff0c","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-08 05:20:14 +0000 UTC FinishedAt: 2026-08-08 08:21:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94c7c79d-f16e-4748-8eb7-41f71f120894,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2b13fc55-7788-4183-8e52-e22e67486af2,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-workflowd5jd8/series-workflowd5jd8-build-action-2951869688/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-workflowd5jd8/series-workflowd5jd8-build-action-4228594929/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-workflowd5jd8/series-workflowd5jd8-convert-artifact-3635219498/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,}